在背景框架上定义两个新的窗体,一个用来显示地图名称,一个用来显示坐标信息。一个用来显示地图名称,一个用来显示坐标信息。每个窗体宽等同于父窗体180,高每个占用1/2,就是120的一半,60个像素。然后利用暴雪按钮模板 UIPanelButtonTemplate 创建一个按钮。给按钮赋予点击事件。

注释写的很详细了,直接上代码吧。

toc文件代码:

# 魔兽版本号
## Interface: 90200
# 标题
## Title: |cffffe00a[|r|cffff7d0a摸鱼儿|r|cffffe00a]|r |cff69ccf0第七节 按钮的创建和点击事件|r
# 说明
## Notes: |cff69ccf0魔兽世界插件实战笔记从入门到放弃的心理历程 第七节|r
# 作者
## Author: 摸鱼儿
# 插件的版本号,和魔兽版本号没有关系
## Version: 1.0.0# 框体布局文件
UiFarme.xml# 脚本文件,一般用来放功能实现函数
LuaFamrme.lua 

xml文件代码:

<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Frame name="FrameBackdrop" parent="UIParent"  inherits="BackdropTemplate"  enableMouse="true"  movable="true"><Size><!-- 尺寸设置 --><AbsDimension x="180" y="120" /></Size><Anchors><Anchor point="CENTER"><!-- 偏移 --><Offset x="-250" y="0" /></Anchor></Anchors><Layers><Layer level="BACKGROUND"><!-- 材质设置 --><Texture name="$parentHorizontal" ><Size x="180" y="120" /><!-- 锚点位置 --><Anchors><Anchor point="CENTER" relativePoint="CENTER" /></Anchors></Texture><FontString name="FrameFontString" font="Fonts\ARKai_T.TTF" text="魔兽世界坐标" justifyH="LEFT" justifyV="TOP"><Color r="1" g="1" b="1" a="0.2"/><FontHeight val="20"/><Anchors><Anchor point="CENTER" relativeTo="$parent" x="0" y="5" /></Anchors><Shadow><Offset x="10" y="1" /><Color r="1" g="1" b="1"/></Shadow></FontString></Layer></Layers><Scripts><OnLoad><!-- 表示用鼠标的左键点击 -->self:RegisterForDrag("LeftButton")</OnLoad><OnDragStart>self:StartMoving()</OnDragStart><OnDragStop>self:StopMovingOrSizing()</OnDragStop></Scripts><!-- 利用暴雪按钮模板添加一个关闭按钮 UIPanelCloseButton 它具有OnClick点击事件--><Frames><!-- 在xml这里也是可以添加按钮的 --><!-- 暴雪的关闭按钮模板 --><Button name = "btn_Close"   parent="FrameBackdrop" inherits="UIPanelCloseButton"><Size x="30" y="30" /><Anchors><!-- 把这个按钮锚定在 FrameBackdrop 窗口的右上角位置--><Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" relativeTo="FrameBackdrop"><Offset x="0" y="0" /></Anchor></Anchors><Scripts><OnClick><!-- 当这个按钮被点击,它会获取到自己的父窗口,并关闭它,它的父窗口也就是name="FrameBackdrop"的窗体 --><!-- 获取这个按钮的父窗体,GetParent   也就是FrameBackdrop -->self:GetParent():Hide()</OnClick></Scripts></Button></Frames></Frame></Ui> 

lua文件代码:

local myFrame
local myFontString
local myNameprint("当前游戏版本号:",(select(4,GetBuildInfo())));local backdropInfo = {bgFile        = "Interface/Tooltips/UI-Tooltip-Background",edgeFile   = "Interface/Tooltips/UI-Tooltip-Border",tile       = true,tileEdge = true,edgeSize = 16,insets = { left = 4, right = 4, top = 4, bottom = 4 },
}-- name="FrameBackdrop"
myFrame =  FrameBackdrop
myFrame:SetBackdrop(backdropInfo);
myFrame:SetBackdropColor(0, 0, 1, .5)myFontString = FrameFontString
myFontString:SetText("魔兽世界坐标水印")myName = UnitName("player")
myFontString:SetText(myName .."专用")-- 定义两个新的窗体,一个用来显示地图名称,一个用来显示坐标信息
local frame_1
local frame_2-- 显示地图信息,每个窗体宽等同于父窗体180,高每个占用1/2,就是120的一半,60个像素-- 暴雪的窗体模板BackdropTemplate
frame_1 = CreateFrame("Frame", "Frame_1", FrameBackdrop, "BackdropTemplate")
frame_1:SetSize(180, 60)
frame_1:SetBackdrop({
bgFile = "Interface/Tooltips/UI-Tooltip-Background",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 16,
insets = { left =3, right = 3, top =3, bottom = 3 },
})
-- 颜色设置  最后一个0.5是透明度
frame_1:SetBackdropColor(0.1, 0.6, 0.6, .5)
-- 窗体位置的锚定
frame_1:SetPoint("TOP",FrameBackdrop,"TOP",0,0)-- 用label来返回FontString的字体属性
frame_1.label = frame_1:CreateFontString(nil, "OVERLAY", "SystemFont_OutlineThick_WTF")
frame_1.label:SetAllPoints()
local font, size, flags = frame_1.label:GetFont()
-- size 0.6  就是把字体缩小0.6倍
frame_1.label:SetFont(font, size*0.6, flags)
frame_1.label:SetText("地图信息")-- 显示坐标信息
frame_2 = CreateFrame("Frame", "Frame_2", FrameBackdrop, "BackdropTemplate")
frame_2:SetSize(180, 60)
frame_2:SetBackdrop({
bgFile = "Interface/Tooltips/UI-Tooltip-Background",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize =16,
insets = { left = 0.3, right = 0.3, top = 0.3, bottom = 0.5 },
})
frame_2:SetBackdropColor(0, 0, 1, .5)
frame_2:SetPoint("BOTTOM",FrameBackdrop,"BOTTOM",0,0)-- frame_2.label = frame_2:CreateFontString(nil, "OVERLAY", "SystemFont_OutlineThick_WTF")
frame_2.label = frame_2:CreateFontString(nil, "OVERLAY", "SystemFont_OutlineThick_WTF")
frame_2.label:SetAllPoints()
-- 看看 暴雪  SystemFont_OutlineThick_WTF  这个字体对应的具体是什么,包括字体大小什么的
local font, size, flags = frame_2.label:GetFont()
-- 把这个字体属性打印一下看看是什么
print("font:",font,"    size:",size,"   flags:",flags)
frame_2.label:SetFont(font, size*1.2, flags)
frame_2.label:SetText("坐标信息")-- 下面开始介绍按钮控件是的使用-- 利用暴雪按钮模板  UIPanelButtonTemplate  创建一个按钮
-- 按钮和框体的创建的时候,需要指明是"Frame"  还是  "Button"
local button_1 = CreateFrame("Button", nil, FrameBackdrop, "UIPanelButtonTemplate")
button_1:SetSize(50, 30)
button_1:SetPoint("CENTER")
button_1:SetPoint("TOPRIGHT", "FrameBackdrop", "TOPLEFT", 0, 0)
button_1:SetText("版本")
button_1:RegisterForClicks("AnyUp", "AnyDown")
-- 定义OnClick  按钮的点击事件
button_1:SetScript("OnClick", function (self, button, down)-- 利用第一个参数button来判断按下的是鼠标左键还是右键点击print((down and "Pressed " or "Pressed and released ") .. button)-- 显示版本号print("当前游戏版本号:",(select(4,GetBuildInfo())));-- 用SetText来改变自身的文本button_1:SetText(select(4,GetBuildInfo()))
end)local button_2 = CreateFrame("Button", nil, FrameBackdrop, "UIPanelButtonTemplate")
button_2:SetSize(50, 30)-- 右上锚定左上
button_2:SetPoint("TOPRIGHT", "FrameBackdrop", "TOPLEFT", 0, -30)
button_2:SetText("设置")
button_2:RegisterForClicks("AnyUp", "AnyDown")
button_2:SetScript("OnClick", function (self, button, down)
-- self:SetText((down and "Pressed " or "Pressed and released ") .. button)
print((down and "Pressed " or "Pressed and released ") .. button)
print(self:GetText())
end)local button_3 = CreateFrame("Button", nil, FrameBackdrop, "UIPanelButtonTemplate")
button_3:SetSize(50, 30)-- 右上锚定左上
button_3:SetPoint("BOTTOMRIGHT", "FrameBackdrop", "BOTTOMLEFT", 0, 30)
button_3:SetText("帮助")
button_3:RegisterForClicks("AnyUp", "AnyDown")
button_3:SetScript("OnClick", function (self, button, down)
-- self:SetText((down and "Pressed " or "Pressed and released ") .. button)
print((down and "Pressed " or "Pressed and released ") .. button)
-- print("当前游戏版本号:",(select(4,GetBuildInfo())));-- 这里留下一个问题,下一节解决,就是给窗体设置命令行
print("命令行1:/hw  可以显示和隐藏")
print("命令行2:/hwplus  可以显示和隐藏")
end)local button_4 = CreateFrame("Button", nil, FrameBackdrop, "UIPanelButtonTemplate")
button_4:SetSize(50, 30)-- 右上锚定左上
button_4:SetPoint("BOTTOMRIGHT", "FrameBackdrop", "BOTTOMLEFT", 0, 0)
button_4:SetText("关闭")
button_4:RegisterForClicks("AnyUp", "AnyDown")button_4:SetScript("OnClick", function (self, button, down)
-- self:SetText((down and "Pressed " or "Pressed and released ") .. button)
print((down and "Pressed " or "Pressed and released ") .. button)
-- self:GetParent():Hide()
-- 可以利用 getglobal 函数来获取 "FrameBackdrop"  窗体
-- 利用暴雪的Hide()函数来实现FrameBackdrop窗体的隐藏
getglobal("FrameBackdrop"):Hide();
-- 当点击了隐藏按钮后,怎么把窗体再显示出来呢?请听下回分解......
end) 

留个问题:当点击了隐藏按钮后,怎么把窗体再显示出来呢?请听下回分解......

视频我放在了B站,有兴趣的自己去看,高手略过,就是初步入门。

魔兽世界插件实战笔记从入门到放弃的心理历程 第七节 按钮的创建和点击事件

【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第七节 按钮的创建和点击事件相关推荐

  1. 梳理 React 知识笔记 从入门到放弃 !框架必知的知识点

    React 一.React - 简介 ​ React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框 架,都不满意,就决定自己写一套,用来架设Insta ...

  2. python爬虫从入门到实战笔记——第四章Scrapy框架

    推荐阅读: python爬虫从入门到实战笔记--第一章爬虫原理和数据爬取 python爬虫从入门到实战笔记--第二章非结构化数据和结构化数据的提取 python爬虫从入门到实战笔记--第三章动态HTM ...

  3. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  4. 知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

    前言 微信小程序作为近几年"微服务"的杰出代表,应用十分广泛.小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验 ...

  5. Android插件化:从入门到放弃

    喜欢 | 作者 包建强 发布于 2016年7月14日. 估计阅读时间: 1 分钟 | 道AI风控.Serverless架构.EB级存储引擎,尽在ArchSummit!讨论 分享到:微博微信Facebo ...

  6. 零基础入门推荐系统 - 新闻推荐实战-笔记四

    零基础入门推荐系统 - 新闻推荐实战-笔记四-特征工程 什么是特征工程 本次特征工程内容 已有特征 特征构造 负采样 什么是特征工程 工业界名言:数据和特征决定了机器学习的上限,而模型和算法只是逼近这 ...

  7. 58同城Android端-最小插件化框架实战和原理分析

    目录 背景 插件化需要了解的知识 2.1 类加载过程和类加载器 2.2 ClassLoader 的 findClass.findLibrary.findResource 2.3 DexClassLoa ...

  8. 【板栗糖GIS】——如何使用插件将微信读书笔记同步到notion

    [板栗糖GIS]--如何使用插件将微信读书笔记同步到notion 注:本文创意以及插件开发皆是B站的[三此君] 视频链接如下: 全网唯一支持图文导出的微信读书插件,升级啦!主打一个惊艳._哔哩哔哩_b ...

  9. Android 插件化原理 完胜360插件框架 技术实战

    性能优化 Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 ...

  10. 微信小程序入门与实战笔记

    微信小程序 目录 微信小程序 1微信小程序介绍 1.1什么是微信小程序 1.2小程序特点 1.3对开发者的影响 1.4分辨率与rpx 1.4.1英寸 1.4.1分辨率(pt): 1.4.2分辨率(px ...

最新文章

  1. 互联网+时代,SAP助力跨境电商全面升级研讨会圆满落幕
  2. 用二维编码做特色名片!
  3. Python调用HTTP接口并传递cookie
  4. 一个对象,数组去重的方法
  5. php 读取文件fread,PHP: 读取文件 fgets 和 fread 的差异
  6. [vue] 从0到1自己构架一个vue项目,说说有哪些步骤、哪些重要插件、目录结构你会怎么组织
  7. web前端开发技术期末考试_智慧树来我校开展WEB前端开发微专业导学
  8. jQuery拖动调整表格列宽度-resizableColumns
  9. ubuntu下QQ无法登录解决。
  10. world Best 500 interview exam
  11. picker多选 vant_浅谈vant组件Picker 选择器选单选问题
  12. DataView 构造
  13. 一份简单的车辆环视全景系统实现
  14. 万能遥控程序c语言,单片机解码万能红外遥控器的C51程序
  15. AltiumDesigner 19软件安装步骤
  16. 《中国电力报》| 远光让园区用能更低碳高效
  17. 雄迈信息联合华为海思发布H.265AI技术,让安防视频更智能
  18. LICEcap 屏幕录制工具
  19. kernel启动流程-head.S的执行_4.el2_setup
  20. java实现简单的电话簿

热门文章

  1. 【GCN-CTR】端到端的GNN-CTR:Dual Graph enhanced Embedding Neural Network for CTR Prediction (KDD‘21)
  2. SVC的主要作用及应用范围
  3. excel如何快速录入身份证号码?
  4. git使用——15.搭建自己的gitlab服务器来存放我们的git项目
  5. ubuntu18.04查看网卡mac地址
  6. 网络诊断显示“DNS服务器可能不可用”
  7. win7无法连接打印机拒绝访问_win7无法连接打印机拒绝访问|WinXP访问Win10打印机被拒绝怎么办?...
  8. 免费老牌php空间,Alwaysdata.com老牌稳定法国PHP免费空间
  9. [Tyvj1450 GF打Dota]
  10. css竖向箭头符号_如何使用CSS制作箭头符号