## **.xml或XML可视元素文件**
“ UI元素”或“小部件”是构成用户界面的所有图形的小片段。WoW使用XML来布局您在屏幕上看到的所有内容。另外,当屏幕上的窗口小部件发生事情(称为“事件”,还记得吗?)时,可以调用事件处理程序(即函数)以执行所需的任何操作。不久我们将看到如何告诉WoW我们对哪些小部件感兴趣以及希望由哪个事件处理程序处理哪些事件。
#### 暴雪XML格式声明
我们声明我们的文档符合Blizzard模式并具有以下内容:
~~~
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd">
<!-- 插件的功能在这里定义 -->
</Ui>
~~~
暴雪在中定义了UI小部件`UI.xsd`。如果您提取了Blizzard接口,则可以在Interface / FrameXML / UI.xsd中找到此文件,或者 wowprogramming.com[在此处](http://wowprogramming.com/FrameXML/UI.xsd)维护在线副本。该[XML的用户界面](https://wow.gamepedia.com/XML_user_interface "XML用户界面")页面有下一张好名单[的Widget元素](https://wow.gamepedia.com/XML_user_interface#Widget_Elements "XML用户界面")
~~~
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd">
<!-- 表示在此处载入xxoo.lua文件(非必须的,如果没有xml文件,我们直接在toc中放个lua文件就可以), -->
<Script File="xxoo.lua"/>
<!--Frame是包含UI元素的,UIParent是最顶层的框架,所有的UI都包含在其中,他在游戏里是透明的。与之并列的是一个特殊的World Frame包括FPS、截图,其他的ui控件都是Frame的子类-->
<Frame name="eCoordinates" parent="UIParent">
<Scripts>
<OnLoad function="eCoordinates_OnLoad"></OnLoad>
<OnEvent function="eCoordinates_OnEvent"></OnEvent>
</Scripts>
</Frame>
</Ui>
~~~
```
<Frame name="名称,唯一" inherits="myFather继承" toplevel="true 等级" parent="UIParent 父标签" id="编号" movable="true 可移动" enableMouse="true 允许鼠标事件" frameStrata="HIGH层级" hidden="false隐藏">
<Size>
<!--大小-->
<AbsDimension x="" y="" /><!--绝对尺寸-->
</Size>
<!--简化方法一>
<size x="" y="" />
<Anchors> <!--锚点,用来标记相对位置-->
<Anchor Point="本控件的参考点" relativeTo="参考控件" relativePoint="参考控件的参考点">
<Offset> <!--偏移值-->
<AbsDimension x="" y="" />
</Offset>
<!--简化写法-->
<Offset x="" y="" />
</Anchor>
</Anchors>
<!--背景和边框-->
<Backdrop name= "$parentBackdrop" bgFile="背景贴图" edgeFile="边框贴图" tile="不知道">
<EdgeSize>
<AbsValue val="18" /> <!--边框缩放大小-->
</EdgeSize>
<TileSize>
<Absvalue val="16" />
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/> <!--背景四周留白-->
</BackgroundInsets>
</Backdrop>
<Layers> <!--分层,主要放置贴图材质和字符-->
<Layer level="BACKGROUND"> <!--背景层-->
<Texture name="$parentRed" file="贴图" hidden="true"/>
</Layer>
<Layer level="ARTWORK"> <!-- 艺术层-->
<FontString name="$parent名字" inherits="Font" justifyH="CENTER"/>
</Layer>
<Layer level="OVERLAY"> <!-- 覆盖层-->
<Texture name="$parentShine" file="贴图" alphaMode="ADD透明模式" hidden="true">
<Anchors>
<Anchor point=?,CENTER"/>
</Anchors>
</Texture>
</Layer>
</Layers>
<Frames>
<!--嵌入其他框架-->
</Frames>
<Scripts>
<OnLoad>处理载入事件</OnLoad>
<OnEvent>处理用RegisterEvent注册过的事件</OnEvent>
<OnUpdate>更新事件 </OnUpdate>
<OnShow>显示事件 </OnShow>
<OnHide>隐藏事件 </OnHide>
<OnClick>单击事件</OnClick>
<OnDoubleClick>双击事件</OnDoubleClick>
<OnEnter>鼠标键入</OnEnter>
<OnLeave>鼠标移出 </OnLeave>
<OnDragStart>拖放开始</OnDragStart>
<OnReceiveDrag>接受受拖放</OnReceiveDrag>
<OnValueChanged>值改变(用于 Slider 滑块)</OnValueChanged>
</Scripts>
</Frame>
```
## inherits 和 parent 的区别
| | |
| --- | --- |
| inherits | 继承,表示本控件未标明的属性全部继承自某控件(包括事件处理脚本) |
| parent | 父控件,表示依存关系,如果父控件隐藏了那么子控件也会隐藏 |
## Anchor锚点中的定位规则
| | |
| --- | --- |
| Point| 自身参考点
|
| relativeTo| 参考控件 |
| relativePoint|参考控件参考点 比如一个正方形的按钮:`<Anchor Point="LEFT" relatriveTo="$parent" relativePoint="Right">`的意思是:我的左边对父控件的右边,效果就是按钮始终在父控件的右边|
## **UI对象的继承关系**
* UIObject 始祖所有的ui对象都是继承与它
* * LayoutFrame 布局框架,继承UIObject,主要有一些布局函数(这是一个虚类不可创建实例)
LayoutFrame的一些重要函数
GetParent()
Setparent()
GetAlpha()
SetAlpha()
SetWidth()
SetHeight()
IsShow() 是否显示,表示一种属性,如果父对象可见的时候是否会显示
IsVisible() 是否可见,表示当前状态当前对象在屏幕上有没有显示
* * * Farme 框架,继承与LayoutFrame,最重要的UI对象屏幕上可见的UI对象都是他的子类,一般在它上面放置其他控件
* * * * Button 按钮
* EditBox 可编辑文本框
* GameTooltip 鼠标提示
* ColorSelect 颜色选择器
* MessageFrame 信息框架
* MiniMap 迷你地图,小地图,战场地图等
* Model 模型,用于显示3D动画 人物模型,冷却都是Model
* MovieFrame 电影框架(放电影的?)
* ScrollFrame 可滚动框架
* ScrollingMEssageFrame 滚动信息框架例如聊天窗口、战斗信息窗口
* SimpleHTML 类似网页的可以定义图片文字大小颜色的文本
* slider 滑块像系统设置中的ui缩放那种滑块
* statusbar 进度条 像是施法条,血条等等
- 基础
- 循环
- 迭代器
- ipairs与pairs 的区别
- 流程控制if
- 函数
- 运算符
- 字符串
- 数组
- table(表)
- 模块与包
- 魔兽插件
- 初学介绍
- api
- Global API
- Widget API
- 窗口小部件类层次结构(Widget Class Hierarchy)
- 动画(Animation)
- 透明度(Alpha)
- 线条缩放比例(LineScale)
- 平移(Translation)
- 线平移(Line Translation)
- 路径(Path)
- 旋转(Rotation)
- 缩放(Scale)
- 纹理坐标平移(TextureCoordTranslation)
- 框架 :Frame
- 浏览器(Browser)
- 按键(Button)
- Item按钮(ItemButton)
- 检查按钮(CheckButton)
- 检测(Checkout)
- 颜色选择(ColorSelect)
- 冷却(Cooldown)
- 编辑框(EditBox)
- 战争迷雾(FogOfWarFrame)
- 游戏工具提示(GameTooltip)
- 消息框(MessageFrame)
- 小地图(Minimap)
- 模型(Model)
- 玩家模型(PlayerModel)
- 电影模型(CinematicModel)
- 换装模型(DressUpModel)
- 战袍模型(TabardModel)
- _模型场景(ModelScene)
- 电影Frame(MovieFrame)
- 根小部件(Root Widgets)
- UIObject衍生品(UIObject Derivatives)
- 动画衍生品(Animation Derivatives)
- FontInstance
- 地区衍生品(Region Derivatives)
- 帧衍生品(Frame Derivatives)
- 特殊(Special)
- Events(游戏中变化的事件)
- WoWAPI
- Global Function Groups
- 帐户(Account)
- 成就(Achievements)
- 动作条(Action Bars)
- Action Buttons
- 插件(AddOns)
- 冒险指南(Adventure Guide)
- 神器(Artifact)
- 拍卖行(Auction House)
- 黑市AH
- 魔兽代币(WoW Tokens)
- Azerite
- 背包(Bags)
- 容器(Containers)
- 库存(Inventory)
- 银行(Bank)
- 公会银行(Guild Bank)
- 理发店(Barber Shop)
- 书籍(书籍)
- 日历(calendar)
- 相机(Camera)
- 频道(Channels)
- 聊天窗口(Chat Window)
- 社区(communities)
- 语音聊天(Voice Chat)
- 推特(Twitter)
- 角色(Character)
- 角色表(Paper Doll)
- 试衣间(dressing room)
- 活动(Movement)
- 指定目标(Targeting)
- 死亡(Death)
- 过场动画(Cinematics)
- 职业(class)
- 天赋(Talents)
- 收藏(Collections)
- 坐骑(Mount Journal)
- 宠物(Pet Journal)
- 玩具箱(Toy Box)
- 传家宝(Heirlooms)
- 外观(Appearances)
- 战斗记录(Combat Log)
- 战斗宠物(Combat Pets)
- 同伴(Companions)
- Contribution Collection
- 货币(Currency)
- 光标(Cursor)
- 客户支持(Customer Support)
- 知识库(Knowledge Base)
- 设备管理器(Equipment Manager)
- 扩展(Expansions)
- FrameXML
- 好友(Friends)
- Who List
- 真实身份证(Real ID)
- 招募朋友(Recruit-a-Friend)
- 驻军(Garrisons)
- 建筑物(Buildings)
- 战利品(Trophies)
- 追随者与任务(Followers & Missions)
- 团队(Groups)
- Raid Groups
- Raid Profiles
- 组查找器(Group Finder)
- 突袭者(Raid Finder)
- 公会(Guild)
- 检查(Inspection)
- Instances
- 场景(Scenarios)
- Mythic+
- 入侵(Invasions)
- 海岛探险(Island Expeditions)
- Items
- 按键绑定(Key Bindings)
- Modifiers
- 劫掠(Looting)
- 失控(Loss of Control)
- 宏命令(Macros)
- 邮件(Mail)
- 地图(Maps)
- 飞行管理员(Flight Master)
- 追踪(Tracking)
- 商人(Merchant)
- 铭牌(Nameplates)
- 宠物大战(Pet Battles)
- 申请书(Petitions)
- 专业(Professions)
- 考古(Archaeology)
- 附魔(Enchantments)
- 雕文(glyphs)
- 物品插口(tem Socketing)
- PvP
- 竞技场(Arena)
- 战场(Battlegrounds)
- 世界战场(World Battlefields)
- 争吵(Brawl)
- 战争游戏(War Games)
- 战争模式(War Mode)
- 任务 (Quests)
- 任务日志(Quest Log)
- 任务选择(Quest Choices)
- Task Quests
- 闲聊(Gossip)
- 探险地图(Adventure Map)
- 战争战役(War Campaigns)
- 种族(Races)
- 境界(Realms)
- 报告(Reporting)
- 声望(Reputation)
- 报废的机器(Scrapping Machine)
- 法术(Spells)
- Spell Book
- 商店(Shop)
- 召唤(Summoning)
- 系统(System)
- 网络(Network)
- 控制台(Console)
- 日期时间(Date & Time)
- 调试(Debugging)
- 图形(Graphics)
- 语言环境(Locales)
- 脚本分析(Script Profiling)
- 安全执行(Secure Execution)
- 声音(Sound)
- Sound Drivers
- Talking Head
- 交易(Trading)
- 训练师(Trainer)
- 迁移(Transmogrification)
- 空白存储(Void Storage)
- 讲解(Tutorials)
- UI对象(UI Objects)
- 框架(Frame)
- 字体(Font)
- 质地(Texture)
- 混合(Mixin)
- 咒语(SpellMixin)
- ItemMixin
- 物品位置(ItemLocationMixin)
- PlayerLocationMixin
- 模型场景(ModelScene)
- 未分类
- UI窗口小部件管理器(UI Widget Manager)
- 单位(Units)
- 光环(Auras)
- 玩家(Players)
- 实用程序(Util)
- 车辆(Vehicles)
- Classic Specific Functions
- 猎人宠物(Hunter Pets)
- 专业(Professions)
- 手工制作(Crafting)
- @PvP
- 模拟器
- 训练师(Trainer)
- 8.x API
- 控制台(Console)
- 召唤(Summoning)
- See also
- 外部链接(External links)
- Widget handlers(UI交互事件)
- ScriptObject
- AnimationGroup
- Animation对象
- Alpha对象
- Scale
- LineScale
- Translation
- LineTranslation
- Path
- Rotation
- TextureCoordTranslation
- Frame
- Browser
- Button
- CheckButton
- ItemButton
- Checkout
- ColorSelect
- Cooldown
- EditBox
- FogOfWarFrame
- GameTooltip
- Model
- PlayerModel
- CinematicModel
- DressupModel
- TabardModel
- MovieFrame
- ScrollFrame
- Slider
- MessageFrame
- Minimap
- ModelScene
- OffScreenFrame
- POIFrame
- ArchaeologyDigSiteFrame
- QuestPOIFrame
- ScenarioPOIFrame
- SimpleHTML
- StatusBar
- UnitPositionFrame
- WorldFrame
- 入门
- .toc
- .lua
- .xml
- 示例
- 自动邀请插件
- 完整例子:显示任务坐标
- eCoordinates.toc
- eCoordinates.xml
- eCoordinates.lua
- 开发帮助组件
- AddOn Studio编辑器
- 暴雪自带调试工具
- DevTools调试插件
- wowlua
- 魔兽宏
- 战斗宠物命令
- 暴雪界面命令
- 聊天命令
- chat substitutions
- 角色指令
- 开发者工具
- 表情动作
- 战斗命令
- 公会命令
- 小队与团队命令、
- 宠物命令
- PvP的命令
- 系统命令
- 目标函数
- 命令
- 被禁用的命令
- 宏条件
- 装备物品编号