Chiamala come
UI.condition_position.constructor()
Registra la dipendenza UI.condition_position.constructor, poi chiamala con quel nome. Una chiamata con spazio dei nomi non passa self: usa una chiamata con i due punti o passa tu l'oggetto.
Cosa fa
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.
Argomenti
Nessuno.
Valori restituiti
| 1 | RMConditionWidget | The new position pad widget, registered with the condition widget system. |
|---|
Edizioni
Le funzioni di supporto integrate sono registrate su ogni edizione. Ciò che cambia è l'API di gioco che leggono; dove ne manca una, la funzione di supporto ripiega su un'alternativa o restituisce nil con un motivo.
- Non disponibile su quell'edizione (il motivo è nel suggerimento)
- Solo mentre sono attivi i ripieghi di Blizzard per le API deprecate
| API di gioco | |||||
|---|---|---|---|---|---|
CreateFrame | |||||
UIParent |
Esempio
-- 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)Sorgente
UI/condition_position.lua, riga 23. Nel gioco è in sola lettura; Duplica crea una copia modificabile.
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)




