Aufruf als
UI.condition_icon.constructor()
Erfassen Sie die Abhängigkeit UI.condition_icon.constructor und rufen Sie sie dann unter diesem Namen auf. Ein Aufruf über den Namensraum übergibt kein self: Verwenden Sie einen Doppelpunkt-Aufruf oder übergeben Sie das Objekt selbst.
Was sie bewirkt
Constructs a new RM-ConditionIcon widget: a clickable image with an optional caption below it, with SetImage, SetImageByAtlas, SetImageSize, SetLabel and SetDisabled, firing OnClick, OnEnter and OnLeave while its lease is live. It returns the registered but not yet acquired widget; addon:CreateConditionIcon passes it to addon:AcquireConditionWidget.
Argumente
Keine.
Rückgabewerte
| 1 | RMConditionWidget | The new icon widget, registered with the condition widget system. |
|---|
Editionen
Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.
- Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
- Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
| Spiel-API | |||||
|---|---|---|---|---|---|
CreateFrame | |||||
GameFontHighlightSmall | |||||
GameTooltip | |||||
UIParent |
Beispiel
-- needs the dependency UI.condition_icon.constructor
local icon = addon:AcquireConditionWidget("RM-ConditionIcon", UI.condition_icon.constructor)
icon:SetImage("Interface\\Icons\\INV_Misc_QuestionMark")
icon:SetImageSize(36, 36)
icon:SetLabel(L["Spell"])
parent:AddChild(icon)Quelle
UI/condition_icon.lua, Zeile 27. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
UI.condition_icon.constructor()
local w={type='RM-ConditionIcon',alive=false,disabled=false}
local frame=CreateFrame('Button',nil,UIParent);w.frame=frame;frame:EnableMouse(true)
local image=frame:CreateTexture(nil,'ARTWORK');w.image=image;image:SetPoint('TOP',0,-5)
local label=frame:CreateFontString(nil,'OVERLAY','GameFontHighlightSmall');w.label=label
label:SetPoint('BOTTOMLEFT');label:SetPoint('BOTTOMRIGHT');label:SetJustifyH('CENTER');label:SetJustifyV('TOP');label:SetHeight(18)
function w:SetLabel(text)
self.labelText=text or '';label:SetText(self.labelText)
if self.labelText~='' then label:Show() else label:Hide() end
self:SetHeight(image:GetHeight()+(self.labelText~='' and 25 or 10))
end
function w:SetText(text) self:SetLabel(text) end
function w:SetImage(path,...)
image:SetTexture(path)
local count=select('#',...)
if count==4 or count==8 then image:SetTexCoord(...) else image:SetTexCoord(0,1,0,1) end
end
function w:SetImageByAtlas(atlas) image:SetAtlas(atlas) end
function w:SetImageSize(width,height)
image:SetSize(width,height);self:SetHeight(height+(self.labelText~='' and 25 or 10))
end
function w:SetDisabled(value)
self.disabled=value==true
if self.disabled then frame:Disable();image:SetVertexColor(.5,.5,.5,.5);label:SetTextColor(.5,.5,.5)
else frame:Enable();image:SetVertexColor(1,1,1,1);label:SetTextColor(1,1,1) end
end
function w:OnAcquire()
self.alive=true;self:SetWidth(110);self:SetLabel('');self:SetImage(nil);self:SetImageSize(64,64);self:SetDisabled(false)
frame:RegisterForClicks('LeftButtonUp')
local lease=self.rmLease
local function live() return w.alive and w.rmActive and w.rmLease==lease and not w:IsReleasing() end
addon:SetUIScript(frame,'OnClick',function(_,button) if live() and not w.disabled then w:Fire('OnClick',button) end end)
addon:SetUIScript(frame,'OnEnter',function() if live() then w:Fire('OnEnter') end end)
addon:SetUIScript(frame,'OnLeave',function() if live() then w:Fire('OnLeave') end end)
end
function w:OnRelease()
self.alive=false
if GameTooltip and GameTooltip:IsOwned(frame) then GameTooltip:Hide() end
self:SetLabel('');self:SetImage(nil)
end
return addon:RegisterConditionWidget(w)




