Der Interface-Basteleien-Thread!

Das ist eigentlich nicht schwer. "..." bewirkt, das alles was nach "width, height" (Zeile 3) kommt, nach "..." (Zeile 7) übergeben wird.

In Zeile 85 siehst du
Code:
CreatePanel(1680, 20, "TOPLEFT", 0, 1);
"TOPLEFT", 0, 1 ist hierbei das "..." (Zeile 3) und wird so wie ich es geschrieben habe nach "..." (Zeile 7) übergeben.

Bildlich gesehen würde es dann so sein:
Code:
panel:SetPoint("TOPLEFT", 0, 1);

Nun Fragst du dich sicherlich ???, warum "..." und nicht einfach Variablen, wie beim width und height.

Ganz einfach: SetPoint ist sehr flexibel. SetPoint kann man _bis zu 5 Werte_ geben. Link zu WoWWiki
Klingt vielleicht kompliziert, aber das wirst du automatisch lernen.


Das return steht da, damit er das Frame (local panel = CreateFrame("Frame", nil, UIParent);) wieder gibt. So könntest du rein theoretisch mit dem Frame weiter arbeiten.

In panelTop (Zeile 85) und panelBottom (Zeile 87) befindet sich nun das Frame. Würde ich return weg lassen, wäre in denen kein Frame und du kannst nichts weiter machen.

Ich hätte es vielleicht so machen sollen: http://pastebin.com/f8uGbR0R
Ohne return wäre das nicht möglich.


Ich hoffe du hast es ein wenig verstanden... Bin nicht ganz so gut im erklären. :-)
Kann dir sonst Beispiele machen.
 
Ich hoffe du hast es ein wenig verstanden... Bin nicht ganz so gut im erklären. :-)
Kann dir sonst Beispiele machen.

Vielleicht bist du nicht der Weltbeste im Erklären aber ich fands schon recht gut und verständlich.

Und das mit dem "..." ansich, also die Funktion hatte ich ja schon verstanden, nur das es so überhaupt funktioniert und möglich ist wunderte mich stark.

Edit: Okay ich hab ein großes Problem: Absolut keine Idee an welches Projekt ich mich als nächstes setzen sollte, hab Angst das ich mich übernehme und nichts funktioniert und ich die motivation verliere.
 
Zuletzt bearbeitet:
Irgendwas kleines, würde ich sagen. :-) Eine simple Anzeige für irgendwas z.B.. Muss ja kein richtigen Sinn ergeben.
 
Hmm an so etwas hatte ich gestern vorm schlafen gehen auch gedacht. Genauer: Ne Anzeige in welcher Zone man sich befindet.
 
Ui ui ui, vor zwei Tagen auf dem PTR angefangen, um mein neues UI zu coden. Diesmal kein Tukui, nur diese Actionbars nerven mich tierisch. Mal sehen wie es wird.
Brauche noch eine schöne Textur und mal neue Schriftarten.

Ich hätte da aber noch eine Frage an dich Shantalya, da du dich ja gut auskennst: Wie ist es eigentlich mit der eigenen API? Habe das aus Tukui rauskopiert, um mir die Arbeit etwas zu erleichtern, jedoch ist das CPU freundlich oder eher nicht?
 
Kommt drauf an wie TukUI es macht. :-) Lauter OnUpdate sind CPU unfreundlich, normale Dinge, die nichts weiter machen oder Events, sind CPU freundlicher.

@Sinned321: Das ist doch eine gute Idee! :-)
 
Zuletzt bearbeitet von einem Moderator:
Der Code sieht ungefähr so aus:
Code:
local function Size(frame, width, height)
	frame:SetSize(Scale(width), Scale(height or width))
end

local function Width(frame, width)
	frame:SetWidth(Scale(width))
end

local function Height(frame, height)
	frame:SetHeight(Scale(height))
end

Code:
local function addapi(object)
	local mt = getmetatable(object).__index
	if not object.Size then mt.Size = Size end
	if not object.Width then mt.Width = Width end
	if not object.Height then mt.Height = Height end

end

local handled = {["Frame"] = true}
local object = CreateFrame("Frame")
addapi(object)
addapi(object:CreateTexture())
addapi(object:CreateFontString())

object = EnumerateFrames()
while object do
	if not handled[object:GetObjectType()] then
		addapi(object)
		handled[object:GetObjectType()] = true
	end

	object = EnumerateFrames(object)
end

Also ich sehe keine OnUpdate Funktionen, von daher kann ich ja beruhigt sein.
 
Der Code sieht ungefähr so aus:
Code:
local function Size(frame, width, height)
	frame:SetSize(Scale(width), Scale(height or width))
end

local function Width(frame, width)
	frame:SetWidth(Scale(width))
end

local function Height(frame, height)
	frame:SetHeight(Scale(height))
end

Code:
local function addapi(object)
	local mt = getmetatable(object).__index
	if not object.Size then mt.Size = Size end
	if not object.Width then mt.Width = Width end
	if not object.Height then mt.Height = Height end

end

local handled = {["Frame"] = true}
local object = CreateFrame("Frame")
addapi(object)
addapi(object:CreateTexture())
addapi(object:CreateFontString())

object = EnumerateFrames()
while object do
	if not handled[object:GetObjectType()] then
		addapi(object)
		handled[object:GetObjectType()] = true
	end

	object = EnumerateFrames(object)
end

Also ich sehe keine OnUpdate Funktionen, von daher kann ich ja beruhigt sein.

Die API ist nicht Benutzer bzw Einsteigerfreundlich (Viele lernen die Tukui API kennen aber nicht mal was dahinter steckt)
 
Ich weiß nicht ob du das speziell auf mich bezogen hast, aber ich arbeite mit der API schon seit dem Tukui das hat und für mich ist diese Methode angenehmer und schneller.
 
ich eknn genug die nur die tukui api kennen und dann verwundert rumwhinen wenn es in addons nicht gehen ohne tukui. Die Methode ist als erfahrener Coder um einiges schneller. Aber zu aufwendig wenn man viel ändern will. Bzw standalone addons macht
 
Da ich ja nicht zum direkten Programmieren kommen hab ich mir mal überlegt wie ich es überhaupt anstellen will.

Mein bisheriger Plan sieht so aus:

1. Frame erstellen
2. Fluchen weil nichts funktioniert
3. Herrausfinden wie ich Text in diesem Frame anzeigen lassen kann
4. Noch mehr Fluchen
5. Irgendeinen Beispieltext in den Frame anzeigen lassen und verstehen warum das so funktioniert hat
6. Ne kleine runde freuen
7. Irgendwie den Zonentext auslesen und in dem Frame anzeigen lassen.
8. Im Forum fragen warum das nicht klappt.
9.-13 noch nicht definiert.

Fehlt da was oder ist der Plan soweit gut?
 
Ich finde den Plan bis jetzt gut, aber vielleicht etwas weniger fluchen und mehr freuen. :-P
 
früher mal konnte ich einfach in den \WoW\Fonts Ordner gehen und Dateien austauschen. Heute gibt es den Ordner per default nicht und wenn ich meinen alten mit meinen alten Fonts einfüge, fliegen mir diverse Fehler um die Ohren, dass alle möglichen Fonts nicht gesetzt sind. Was also muss da drin sein, damit alles seine Font abkriegt?
 
Zurück