Chame como
UI.condition_position.constructor()
Registre a dependência UI.condition_position.constructor e depois chame-a por esse nome. Uma chamada com namespace não passa self: use uma chamada com dois-pontos ou passe o objeto você mesmo.
O que faz
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.
Argumentos
Nenhum.
Retornos
| 1 | RMConditionWidget | The new position pad widget, registered with the condition widget system. |
|---|
Edições
As funções auxiliares integradas são registradas em todas as edições. O que muda é a API do jogo que elas leem; quando uma está ausente, a função auxiliar recorre a uma alternativa ou retorna nil com um motivo.
- Indisponível nessa edição (o motivo está na dica)
- Só enquanto as alternativas da Blizzard para APIs obsoletas estiverem ativas
| API do jogo | |||||
|---|---|---|---|---|---|
CreateFrame | |||||
UIParent |
Exemplo
-- 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)Código-fonte
UI/condition_position.lua, linha 23. Somente leitura no jogo; Duplicar cria uma cópia editável.
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)




