wertzû
Welt-Boss
- Mitglied seit
- 12.01.2008
- Beiträge
- 2.803
- Reaktionspunkte
- 20
- Kommentare
- 76
Wie erstelle ich ein Frame?
Position des Frames
Hintergrund, Vordergrund?
Höhe, Breite?
Frame Textur zuweisen
Farbe?
Kommen wir nun zu den interessanteren sachen.
Frame klickbar machen
Tue das wenn ich darauf klicke
Frame Mouseover machen
Frame bewegbar machen
Frames Updaten
mit diesem Code wird jede 0.1 Sekunde (millisekunde) geupdated, dies kann voralles sehr nützlich sein wenn es um verschieben von Blizzframes geht (manchmal muss man es updaten lassen weil sie sich sonst verschieben)
Frame jede Sekunde updaten lassen
Code is aus dem WoWforum, da ich selten update und wenn dan nur jede 0.1 sekunde, kann ich nicht sagen was passiert wenn ich dort eine 2 einsetze zum beispiel, falls ihr es wisst pm an mich bitte
Wenn das passiert dann mach dies (Events)
http://www.wowwiki.com/API_CreateFrame
dabei gilt
eigentlich gibt es noch mehr Arten von Frames, jedoch geh ich nur auf "Frame" ein.
Parent bestimmt wann ein Frame sichtbar ist und wenn kein Anchor gesetzt ist fungiert das Parent als Anchor
Code:
local test = CreateFrame("Frame", "test", UIParent)
dabei gilt
Code:
("Frame", "Name", Parent)
eigentlich gibt es noch mehr Arten von Frames, jedoch geh ich nur auf "Frame" ein.
Parent bestimmt wann ein Frame sichtbar ist und wenn kein Anchor gesetzt ist fungiert das Parent als Anchor
Position des Frames
http://www.wowwiki.c...Region_SetPoint
dabei gilt
sind die Anchors
Will man ein Frame jedoch um ein anderes herum "schlängeln" dann kann man dies benutzen
Code:
test:SetPoint("CENTER",0,0)
dabei gilt
Code:
("Anchor1",AnchorFrame,,Anchor2,X,Y)
Code:
"CENTER","BOTTOM","BOTTOMLEFT","BOTTOMRIGHT","RIGHT","LEFT","TOP","TOPRIGHT","TOPLEFT"
Will man ein Frame jedoch um ein anderes herum "schlängeln" dann kann man dies benutzen
Code:
test:SetPoint("TOPLEFT",ANCHOR,-2, 2)
test:SetPoint("BOTTOMRIGHT",ANCHOR, 2 -2)
Hintergrund, Vordergrund?
SetFrameStrata(). Damit bestimmt man ob im Hintergrund ist oder im Vordergrund
Nun in die Klammer kommt ein Begriff z.B. "BACKGROUND","LOW" oder "HIGH" gibt natürlich noch mehr
http://www.wowwiki.c..._SetFrameStrata
SetFrameLevel(x). SetFrameLevel bewegt sich auf der Ebene von FrameStrata, es gibt die Zahlen 1-10 (0 nicht empfehlenswert)
http://www.wowwiki.c...e_SetFrameLevel
Nun in die Klammer kommt ein Begriff z.B. "BACKGROUND","LOW" oder "HIGH" gibt natürlich noch mehr
sortiert nach level, parent geringstes, Tooltip höchstes
Code:
"PARENT","BACKGROUND","LOW","MEDIUM","HIGH","DIALOG","FULLSCREEN","FULLSCREEN_DIALOG","TOOLTIP",
http://www.wowwiki.c..._SetFrameStrata
Code:
test:SetFrameStrata("BACKGROUND")
http://www.wowwiki.c...e_SetFrameLevel
Code:
test:SetFrameStrata(1)
Höhe, Breite?
Aber, wie hoch und lang sollte das Frame sein?
Mit :SetHeight(x) und :SetWidth(x) könnt ihr es bestimmen
x steht dafür für eine beliebige zahl (welche positiv ist)
Kombiniert gibt es auch das: test:SetSize(Width,Height)
http://www.wowwiki.c...egion_SetHeight
http://www.wowwiki.c...Region_SetWidth
Mit :SetHeight(x) und :SetWidth(x) könnt ihr es bestimmen
x steht dafür für eine beliebige zahl (welche positiv ist)
Kombiniert gibt es auch das: test:SetSize(Width,Height)
http://www.wowwiki.c...egion_SetHeight
http://www.wowwiki.c...Region_SetWidth
Frame Textur zuweisen
danke chiril bin doof
Code:
local f = CreateFrame("Frame", nil, UIParent)
local t = f:CreateTexture(nil,"BACKGROUND")
f:SetPoint("CENTER", UIParent, 0, 0)
f:SetWidth(1950)
f:SetHeight(1210)
f:SetFrameStrata("BACKGROUND")
f:SetFrameLevel(0)
t:SetTexture("Interface\\texture.tga")
t:SetAllPoints(f)
f.texture = t
f:Show()
Farbe?
http://www.wowwiki.c..._SetVertexColor
Auch einfärben ist kein Problem (geht nur bei einer Textur), jedoch gibt es nur eins zu beachten, RGB(A) das ist die Farbreihenfolge, R(ot)G(rün)B(lau)(A(lpha)) (1 die höchste zahl 0 die kleinste)
Beispiel:
Auch einfärben ist kein Problem (geht nur bei einer Textur), jedoch gibt es nur eins zu beachten, RGB(A) das ist die Farbreihenfolge, R(ot)G(rün)B(lau)(A(lpha)) (1 die höchste zahl 0 die kleinste)
Beispiel:
Code:
test:SetVertexColor(.1,.1,.1,1)
Kommen wir nun zu den interessanteren sachen.
Frame klickbar machen
Code:
test:SetEnableMouse(true) – true or false
Tue das wenn ich darauf klicke
http://www.wowwiki.c...Frame_SetScript
Code:
test:SetScript("OnMouseDown", function()
dummy --wie der name sagt nur ein fake, könnt hier einsetzen was ihr wollt, solange es geht
end)
Frame Mouseover machen
http://www.wowwiki.c...rame_HookScript
Code:
test:HookScript("OnEnter", function(self) self:SetAlpha(1) end)
test:HookScript("OnLeave", function(self) self:SetAlpha(0) end)
Frame bewegbar machen
Code:
test:SetMoveable(true)
test:RegisterForDrag("LeftButton", "RightButton")
test:SetScript("OnDragStart", function(self) self:StartMoving() end)
test:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
Frames Updaten
Code:
local test = CreateFrame("Frame")
test:SetScript("OnUpdate", test.OnUpdate)
function test:OnUpdate()
test:ClearAllPoints()
end
mit diesem Code wird jede 0.1 Sekunde (millisekunde) geupdated, dies kann voralles sehr nützlich sein wenn es um verschieben von Blizzframes geht (manchmal muss man es updaten lassen weil sie sich sonst verschieben)
Frame jede Sekunde updaten lassen
Code is aus dem WoWforum, da ich selten update und wenn dan nur jede 0.1 sekunde, kann ich nicht sagen was passiert wenn ich dort eine 2 einsetze zum beispiel, falls ihr es wisst pm an mich bitte
Code:
local lastUpdate = 0
local test = CreateFrame("Frame")
test:SetScript("OnUpdate", test.OnUpdate)
function test:OnUpdate(elapsed)
lastUpdate = lastUpdate + elapsed
if lastUpdate > 1 then
lastUpdate = 0
test:ClearAllPoints
end
end
Wenn das passiert dann mach dies (Events)
http://www.wowwiki.com/Events_(API)
Code:
local test = CreateFrame("Frame")
test:RegisterEvent("PLAYER_ENTERING_WORLD") -- Event wird registriert
function test:OnEvent(event, ...) -- function für event == "blahblahblah" wird erstellt
if event == "PLAYER_ENTERING_WORLD" then -- überprüfung
print("Hello World!") -- Hi Welt!
end
Zuletzt bearbeitet von einem Moderator: