码迷,mamicode.com
首页 > 其他好文 > 详细

看到一段代码,留个脚印

时间:2020-01-22 23:44:10      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:没有   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!