调用方式
UI.condition_display.buttonConstructor()
记录依赖项 UI.condition_display.buttonConstructor,然后按该名称调用。带命名空间的调用不会传入 self:请使用冒号调用,或自行传入该对象。
作用
Constructs a new RM-ConditionButton widget around a 200-pixel workbench button, with SetText, SetAutoWidth and SetDisabled, firing OnClick (with the mouse button), OnEnter and OnLeave only while its lease is live. It returns the registered but not yet acquired widget; addon:CreateConditionButton passes it to addon:AcquireConditionWidget.
参数
无。
返回值
| 1 | RMConditionWidget | The new button widget, registered with the condition widget system. |
|---|
版本
内置辅助函数在每个版本上都会注册。不同的是它们读取的游戏 API;某个 API 缺失时,辅助函数会改用后备方案,或返回 nil 并附上原因。
- 该版本不可用(原因见提示)
- 仅在暴雪的弃用兼容层开启时
| 游戏 API | |||||
|---|---|---|---|---|---|
GameTooltip | |||||
UIParent |
示例
-- needs the dependency UI.condition_display.buttonConstructor
local button = addon:AcquireConditionWidget("RM-ConditionButton", UI.condition_display.buttonConstructor)
button:SetText(L["Clear"])
button:SetAutoWidth(true)
button:SetCallback("OnClick", function() value.spell = nil end)
parent:AddChild(button)依赖项
defaultFont→UI.condition_display.defaultFont
源码
UI/condition_display.lua,第 110 行。在游戏中为只读;“复制”会生成一份可编辑的副本。
UI.condition_display.buttonConstructor()
local w={type='RM-ConditionButton',text='',disabled=false,autoWidth=false}
local frame=addon:CreateWorkbenchButton(UIParent,'',200);w.frame=frame
local label=frame:GetFontString();w.label=label;label:SetWordWrap(false)
local enter,leave=frame:GetScript('OnEnter'),frame:GetScript('OnLeave')
function w:OnWidthSet(width) label:SetWidth(math.max(1,width-12)) end
function w:SetText(text)
self.text=text==nil and '' or tostring(text);frame:SetText(self.text);label:SetText(self.text)
if self.autoWidth then self:SetWidth(label:GetStringWidth()+30) end
end
function w:SetAutoWidth(value)
self.autoWidth=value==true
if self.autoWidth then self:SetWidth(label:GetStringWidth()+30) end
end
function w:SetDisabled(value) self.disabled=value==true;if self.disabled then frame:Disable() else frame:Enable() end end
function w:OnAcquire()
self:SetAutoWidth(false);self:SetWidth(200);self:SetHeight(24);self:SetDisabled(false);self:SetText('')
label:SetFontObject(defaultFont());frame:SetSelected(false);frame.tooltip=nil;frame:RegisterForClicks('LeftButtonUp')
local lease=self.rmLease
local function live() return w.rmActive and w.rmLease==lease and not w:IsReleasing() end
addon:SetUIScript(frame,'OnClick',function(_,button) if live() and not w.disabled then w:Fire('OnClick',button) end end)
addon:SetUIScript(frame,'OnEnter',function() if live() then if enter then enter(frame) end;w:Fire('OnEnter') end end)
addon:SetUIScript(frame,'OnLeave',function() if live() then if leave then leave(frame) end;w:Fire('OnLeave') end end)
end
function w:OnRelease()
if GameTooltip and GameTooltip:IsOwned(frame) then GameTooltip:Hide() end
self.text='';frame:SetText('');label:SetText('');frame.tooltip=nil
end
return addon:RegisterConditionWidget(w)




