Appel
UI.condition_position.constructor()
Enregistrez la dépendance UI.condition_position.constructor, puis appelez-la sous ce nom. Un appel par espace de noms ne transmet pas self : utilisez un appel avec deux-points ou passez l'objet vous-même.
Ce qu'elle fait
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.
Arguments
Aucun.
Retours
| 1 | RMConditionWidget | The new position pad widget, registered with the condition widget system. |
|---|
Éditions
Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.
- Indisponible sur cette édition (la raison figure dans l'infobulle)
- Uniquement tant que les solutions de repli de Blizzard pour les fonctions obsolètes sont actives
| API du jeu | |||||
|---|---|---|---|---|---|
CreateFrame | |||||
UIParent |
Exemple
-- 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)Source
UI/condition_position.lua, ligne 23. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
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)




