看到一段代码,留个脚印
Posted hsoftk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看到一段代码,留个脚印相关的知识,希望对你有一定的参考价值。
此代码是向一个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日,再过两天就过年了,该收拾收东西准备去宿舍了,先写到这里
以上是关于看到一段代码,留个脚印的主要内容,如果未能解决你的问题,请参考以下文章