Aufruf als
UI.condition_position.constructor()
Erfassen Sie die Abhängigkeit UI.condition_position.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-ConditionPositionPad widget around the shared workbench directional pad, with SetDisabled, firing OnOffsetChanged (horizontal and vertical direction, whether Center was pressed, and the step) only while its lease is live and it is enabled. It returns the registered but not yet acquired widget; addon:CreateConditionPositionPad acquires it.
Argumente
Keine.
Rückgabewerte
| 1 | RMConditionWidget | The new position pad 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 | |||||
UIParent |
Beispiel
-- needs the dependency UI.condition_position.constructor
local pad = addon:AcquireConditionWidget("RM-ConditionPositionPad", UI.condition_position.constructor)
pad:SetCallback("OnOffsetChanged", function(_, _, dx, dy, center, amount)
if center then value.x = 0 else value.x = (value.x or 0) + dx * amount end
end)
parent:AddChild(pad)Quelle
UI/condition_position.lua, Zeile 23. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.
UI.condition_position.constructor()
local w={type='RM-ConditionPositionPad',disabled=false}
local frame=CreateFrame('Frame',nil,UIParent);w.frame=frame
local pad=addon:CreateWorkbenchPositionPad(frame);w.pad=pad;pad:SetPoint('TOPLEFT')
local clicks={}
for name,button in pairs(pad.buttons) do clicks[name]=button:GetScript('OnClick') end
function w:SetDisabled(value)
self.disabled=value==true
for _,button in pairs(pad.buttons) do if self.disabled then button:Disable() else button:Enable() end end
end
function w:OnAcquire()
self:SetWidth(48);self:SetHeight(48);self:SetDisabled(false)
local lease=self.rmLease
local function live() return w.rmActive and w.rmLease==lease and not w.disabled and not w:IsReleasing() end
pad:Bind(function(dx,dy,center,amount) w:Fire('OnOffsetChanged',dx,dy,center,amount) end,live,false)
for name,button in pairs(pad.buttons) do
local click=clicks[name]
addon:SetUIScript(button,'OnClick',function(...) if live() then return click(...) end end)
end
end
function w:OnRelease()
pad:Bind(nil,nil,true);self.disabled=true
end
return addon:RegisterConditionWidget(w)




