Register for your free account! | Forgot your password?

Go Back   elitepvpers > World of Warcraft > WoW Addons
You last visited: Today at 09:59

  • Please register to post and access all features, it's quick, easy and FREE!

 

eigenes Addon (Probleme mit dem Event-Handling)

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2012
Posts: 4
Received Thanks: 0
eigenes Addon (Probleme mit dem Event-Handling)

[email protected]
Ich habe vor kurzem angefangen, mich mit der WoW-Addon-Materie zu beschäftigen und bin jetzt fleißig dabei, mir eigene Addons zu schreiben. Jetzt bin ich allerdings schon auf die ersten kleinen Probleme gestoßen.

Also bevor ich meine Probleme erläutere erstmal vorne weg etwas über mich. Ich beschäftige mich schon seit einigen Jahren mit Programmier- / Scriptsprachen. Unter meinem Sprachschatz finden sich u.a. C/++/#, Java, JavaScript, PHP, Pascal, Perl und diverse Basic-Sprachen (Visual Basic, Quick Basic, Pure Basic, etc.) außerdem noch einige Auszeichnungssprachen wie XML und das untergeordnete HTML und noch einiges was dazu gehört (MySQL, WordPress, usw.). Ich schreibe das, um ein wenig zu verdeutlichen, wie ungefähr mein derzeitiger Stand in Sachen Programmierung ist. Somit könnt ihr euch vieleicht ein Teil-Bild von mir machen und wisst, dass ihr mir nicht erst vorbeten müsst, was Variablen sind, wozu Funktionen gut sind oder was es mit Schleifen auf sich hat.

Ich hab mich jetzt ein wenig in Lua eingearbeitet und hab das Grundlegende drauf. Allerdings komme ich jetzt bei der WoW-API nicht ganz weiter. Es geht mir da speziell um das Thema Event-Handling.

Nehmen wir dazu mal ein kleines Code-Beispiel:
Code:
local MainFrame = CreateFrame("FRAME", "MainFrame", UIParent)
MainFrame:SetWidth(200)
MainFrame:SetHeight(200)
MainFrame:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
MainFrame:SetBackdrop({
	bgFile = "Interface\\Buttons\\WHITE8x8",
	edgeFile = "Interface\\Buttons\\WHITE8x8",
	edgeSize = 1})
MainFrame:SetBackdropColor(0, 0.5, 0.8, 0.3)
MainFrame:SetBackdropBorderColor(1, 1, 1, 0.7)

MainText = MainFrame:CreateFontString(nil, "ARTWORK")
MainText:SetFont("Fonts\\ARIALN.ttf", 14, "OUTLINE")
MainText:SetPoint("TOP", MainFrame, "TOP", 0, -5)
MainText:SetText("Any Text")
(Es ist nicht wirklich sinnvoll, dient aber auch nur zur Veranschaulichung.)

Jetzt möchte ich das Fenster mit dem Drücken einer Taste auf der Tastatur verschwinden lassen. Um das Fenster verschwinden zu lassen, benötige ich den Befehl "Hide()" das ist mir klar, allerdings weiß ich nicht, wie ich dieses Event bei einem Tastendruck auslöse. Ich hab mich schon ein wenig informiert aber nichts wirklich Hilfreiches zum Thema Event-Handling bei WoW-Addons gefunden. Mich würde auch gerne mal interessieren, was es alles für Events gibt?

Hier jetzt nochmal eine kleine Kurzfassung meiner Fragen:
- Wie reagiere ich auf ein Event? (ein kleines Codebeispiel wär mir am liebsten ^^)
- Was gibt es alles für Events, auf die ich reagieren kann?

Schonmal danke im Voraus. ^^



EmotionX is offline  
Old   #2
 
elite*gold: 0
Join Date: Aug 2006
Posts: 445
Received Thanks: 519



Was du brauchst ist "SetScript"




Verschiedene ingameevents kannste mit "OnEvent" abfangen
Ne eventliste findest du hier

)


Um dein Beispiel also zu erweitern

Code:
local MainFrame = CreateFrame("FRAME", "MainFrame", UIParent)
MainFrame:SetWidth(200)
MainFrame:SetHeight(200)
MainFrame:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
MainFrame:SetBackdrop({
	bgFile = "Interface\\Buttons\\WHITE8x8",
	edgeFile = "Interface\\Buttons\\WHITE8x8",
	edgeSize = 1})
MainFrame:SetBackdropColor(0, 0.5, 0.8, 0.3)
MainFrame:SetBackdropBorderColor(1, 1, 1, 0.7)
MainFrame:SetScript("OnKeyDown", MainFrame.Hide)

MainText = MainFrame:CreateFontString(nil, "ARTWORK")
MainText:SetFont("Fonts\\ARIALN.ttf", 14, "OUTLINE")
MainText:SetPoint("TOP", MainFrame, "TOP", 0, -5)
MainText:SetText("Any Text")
(Ungetesetet sollte aber klappen)
Musst halt bisl rumspielen und code von andren addons bisl durchschaun


Los is offline  
Thanks
1 User
Old   #3
 
elite*gold: 0
Join Date: Aug 2012
Posts: 4
Received Thanks: 0
Erstmal dankeschön für deine schnelle und hilfreiche Antwort.

Das Code-Beispiel funktioniert einwandfrei und auch die Links waren sehr hilfreich.


Ich hab es mal so abgeändert, dass es nur dann reagiert, wenn ich die Taste "T" drücke. Der Code Dazu sieht so aus:
Code:
local MainFrame = CreateFrame("FRAME", "MainFrame", UIParent)
MainFrame:SetWidth(200)
MainFrame:SetHeight(200)
MainFrame:SetPoint("LEFT", UIParent, "LEFT", 0, 0)
MainFrame:SetBackdrop({
	bgFile = "Interface\\Buttons\\WHITE8x8",
	edgeFile = "Interface\\Buttons\\WHITE8x8",
	edgeSize = 1})
MainFrame:SetBackdropColor(0, 0.5, 0.8, 0.3)
MainFrame:SetBackdropBorderColor(1, 1, 1, 0.7)

MainText = MainFrame:CreateFontString(nil, "ARTWORK")
MainText:SetFont("Fonts\\ARIALN.ttf", 14, "OUTLINE")
MainText:SetPoint("TOP", MainFrame, "TOP", 0, -5)
MainText:SetText("Any Text")

local function HideWindow(self, button, down)
	if button == "T" then
		self:Hide()
	end
end

MainFrame:SetScript("OnKeyDown", HideWindow)
Allerdings ist es wie fast immer beim Programmieren, wenn man ein Problem löst, tritt ein anderes auf. ^^

So lange das Fensterchen sichtbar ist, verschluckt es alle Tastatureingaben. Es ist mir dann nicht mehr möglich irgend ein anderes Fenster mittels Tastendruck zu öffnen, wie z.B. den Quest-Log mit der Taste "L" oder die Map mit der Taste "M", usw...

Gibt es da eine Möglichkeit, mit dem Event so zu sagen nur eine einzige Taste abzufragen, ohne dass die anderen Tasten ins Leere verlaufen?
EmotionX is offline  
Old   #4
 
elite*gold: 132
Join Date: Feb 2011
Posts: 6,618
Received Thanks: 4,359
Wenn ich mich nicht irre, dann sollte frame:SetPropagateKeyboardInput(1) das richtige sein. Ansonsten lies mal nach (ab dem 12. Post).


Mingxie is offline  
Thanks
1 User
Old   #5
 
elite*gold: 0
Join Date: Aug 2012
Posts: 4
Received Thanks: 0
Genau das, wonach ich gesucht hab.
Dankeschön =)


EmotionX is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
Flyff hp probleme mit addon
ich habe volgendes problem ich habe bei register alleseingestellt wie ich es sollte (siehe...
3 Replies - Flyff PServer - Discussions / Questions
Eigenes Addon erstellen - Lua?
Hallo Experten! habe eine kleine Frage an euch. Ich möchte mir ein eigenes Addon erstellen, ein Grundlegendes Tutorial habe ich bereits...
5 Replies - WoW Ask the Experts
[Addon] event registrieren?
hallo leute, ich bastel gerade an einem addon rum, dazu benötige ich eine ständige abfrage der eigenen hp. ich habe versucht das über das event...
1 Replies - General Gaming Discussion
Addon probleme
ich spiele seit..ca 1-2 wochen wieder WoW (auf nem shard ;) ) und habe mir vor vlt 4 tagen neue addons gezogen , aber von anfang an hatte ich mir...
14 Replies - WoW Main - Discussions / Questions
Probleme mit addon...
habe das schon mal im Treat oben gepostet, habe aber Angst das da keiner mehr reinschaut... so da mein erster Post hier, ich sitze jetzt seit 0.30...
6 Replies - WoW Addons



All times are GMT +1. The time now is 09:59.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.