标签:没有 confirm conf self uipanel menu 12月 poi update
此代码是向一个frame添加一个按扭
--===========================================================================
-- 添加按扭
--===========================================================================
local MyButton = CreateFrame(‘Button‘)
MyButton:SetScript(‘OnEvent‘, function(self, event, ...) self[event](self, event, ...) end)
local function OnClick()
ReloadUI()
PlaySound("igMainMenuOption")
end
local function OnEnter(self)
GameTooltip:SetOwner(self, ‘ANCHOR_RIGHT‘)
GameTooltip:AddLine("^_^")
GameTooltip:Show()
end
function ReLoad_OnEnter(self)
GameTooltip:SetOwner(self, ‘ANCHOR_RIGHT‘)
GameTooltip:AddLine("重载插件", 0, 1, 0)
GameTooltip:Show()
end
local function OnLeave()
GameTooltip:Hide()
end
function CreateButton(parent, width, height, point1, point2, point3)
local f = CreateFrame(‘Button‘, nil, parent, ‘UIPanelButtonTemplate‘)
f:SetWidth(width)
f:SetHeight(height)
f:SetPoint(point1, point2, point3)
f:SetText("~_^", 0, 1, 0)
f:SetScript(‘OnClick‘, OnClick)
f:SetScript(‘OnEnter‘, OnEnter)
f:SetScript(‘OnLeave‘, OnLeave)
return f
end
function MyButton:PLAYER_LOGIN()
MyButton:UnregisterEvent(‘PLAYER_LOGIN‘)
-- if IsAddOnLoaded(‘EN_UnitFrames‘) then
-- CreateButton(EUF_OptionFrame, 60, 20, ‘CENTER‘, -30, -10)
local mi = CreateFrame(‘Button‘, nil, EUF_OptionFrame, ‘EUF_ButtonTemplate‘)
mi:SetPoint(‘BOTTOM‘, -20, 20)
mi:SetWidth(90)
mi:SetHeight(24)
mi:SetText("重 载")
mi:SetScript("OnClick", function(self, ...)
--[[ ReloadUI()
PlaySound("igMainMenuOption")]]
mi:SetScript(‘OnClick‘, OnClick)
end)
mi:SetScript(‘OnEnter‘, ReLoad_OnEnter) -- 等同于下面
--[[mi:SetScript("OnEnter", function(self, ...)
GameTooltip:SetOwner(self, ‘ANCHOR_RIGHT‘)
GameTooltip:AddLine("重新加载")
GameTooltip:Show()
ReLoad_OnEnter(self) -- 这里要加参数 self 才有效
end)]]
mi:SetScript("OnLeave", function(self, ...)
GameTooltip:Hide()
end)
-- end
MyButton:RegisterEvent(‘ADDON_LOADED‘)
end
MyButton:RegisterEvent(‘PLAYER_LOGIN‘)
其实上面是一段 lua 代码,但是选择中没有 lua 选项,只有用 java代替了,效果如下:
>>>>>>>>>>
其实还有种方法是就是在 xml中加一段简单的代码:
<Button name="$parentRELOAD" inherits="EUF_ButtonTemplate" text="重载">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parentCONFIRM" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-100" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
ReloadUI()
PlaySound("igMainMenuOption")
</OnClick>
</Scripts>
</Button>
效果和上面差不多。第一种方法中又有了两种方法建立一个按扭,一种是自己定义一个创建按扭的函数,然后建立一系统的函数,如鼠标移动按扭后鼠标提示函数,鼠标移开按扭后鼠标提示隐藏,按扭单击后的动作等等,这里的每一个函数都可以建多个自定义函数,如重载的鼠标提示函数:
function ReLoad_OnEnter(self) ...end
又如 控制面板 的鼠标提示函数
function Option_OnEnter() ... end
等等……,鼠标提示按扭的单击动作
function ReLoad_OnClick(self) ... end
打开控制面板按扭的单击动作
function Option_OnClick(self) ... end
鼠标离开按扭后的动作都一样,因此就只需要一个函数。
然后如果用 CreatButton 函数传入的参数有框体、建立按扭长、宽、坐标,而此函数里又有鼠标移到按扭及离开按扭和单击按扭的动作代码,也就是说用 CreatButton 建立的按扭动作全部都是一样的,但我们有时会有不同的鼠标提示和单击动作,因此我们就用第二种方法建立框体
local mi = CreateFrame(‘Button‘, nil, EUF_OptionFrame, ‘EUF_ButtonTemplate‘)
mi:SetPoint(‘BOTTOM‘, -20, 20)
mi:SetWidth(90)
mi:SetHeight(24)
mi:SetText("重 载")
鼠标的动作(鼠标移到按扭、单击)又有两种实现方法,一种是直接把代码写到下面,如下面
mi:SetScript("OnClick", function(self, ...)
ReloadUI()
PlaySound("igMainMenuOption") -- 这里按键的声音
end)
另一种方法是调用上面的 function ReLoad_OnClick(self) 函数
mi:SetScript("OnClick", function(self, ...)
ReLoad_OnClick(self)
end)
还有一种方法
mi:SetScript(‘OnClick‘, ReLoad_OnClick)
OnClick:为触发类型. 即事件触发. 常见的还有OnEnter OnLeave OnMouseDown OnUpdate OnEven,后面的 ReLoad_OnClick 是函数调用
今天是阴历12月28日,再过两天就过年了,该收拾收东西准备去宿舍了,先写到这里
标签:没有 confirm conf self uipanel menu 12月 poi update
原文地址:https://www.cnblogs.com/hsoftk/p/12229774.html