Referencia › Referencia de funciones › UI

UI.condition_position.constructor

dependencia

Llamar como

UI.condition_position.constructor()

Registra la dependencia UI.condition_position.constructor y luego llámala con ese nombre. Una llamada con espacio de nombres no pasa self: usa una llamada con dos puntos o pasa tú mismo el objeto.

Qué hace

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

Ninguno.

Retornos

1RMConditionWidgetThe new position pad widget, registered with the condition widget system.

Ediciones

Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.

  • No disponible en esa edición (el motivo aparece en la información emergente)
  • Solo mientras estén activas las alternativas de Blizzard para API obsoletas
API del juegoClassic EraTBC AnniversaryClassic ProgressionForeverRetail
CreateFrameClassic EraTBC AnniversaryClassic ProgressionForeverRetail
UIParentClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Ejemplo

-- 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 fuente

UI/condition_position.lua, línea 23. Solo lectura en el juego; Duplicar crea una copia editable.

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)

Volver a Referencia de funciones