您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > WOW插件编写快速入手指南
1、程序员快速入手指南作者:炽火Zero℃原文发表于:猫扑魔兽板块实用资料区引言本文将以一般的软件编程的眼光审视魔兽插件。剥去其难解的外皮,让你有个清晰的大致了解。“一针见血”是技术性教学文章的最高境界——炽火魔兽插件的架构插件工程——每个插件就是一个项目(或称为工程)。目录位置:魔兽目录\Interface\Addons\项目名\工程描述——即后缀名为Toc的文件。描述工程的必要信息,也是项目载入时的总入口。屏幕布局——布局描述使用XML文件。使用各种标签代表特定对象(控件),并描述相互位置及各种特征属性。功能脚本——脚本文件使用LUA语言。使用WoW提供的API函数编写代码实现各种具体操作。TOC——工程描述文件后缀名为toc的文件就是工程文件,包含工程的基本信息。主要包含以下内容:切换行号显示1##Interface:适用的魔兽版本号2##Title:显示的标题(默认语言)3##Notes:显示的说明(默认语言)4##Title-zhCN:特定语言的标题(简体中文)5##Notes-zhCN:特定语言的说明(简体中文)6##Author:作者(不显示)7##Version:版本8#。
2、#eMail:如题9##UIType:插件类型10##Dependencies:依赖的插件11##RequiredDeps:必须依赖的其他插件12##OptionalDeps:可选倚赖13##SavedVariables:统一存放的变量14##SavedVariablesPerCharacter:按角色存放的变量15##LoadOnDemand:1(调用时加载)16##LoadWith:当指定插件加载时才加载,前提是调用时加载17##DefaultState:disabled默认状态18##Secure:安全(功能未知)19#注释1dklasjfkasdj20Script.lua--脚本文件21%注释2dskajfklasdjfklsdaj22Layout.xml--布局文件‘#’和‘%’为行注释符号。而以##开头的注释行可就不光是好看的了,这些都是插件的工程描述标记,要是不注意插件根本就不会载入。示例中彩色的标记表示标准标记,每个标准标记都有特定功能。其它eMail,Author等为扩展标记,只有注释功能。工程标记之后的部分为包含文件列表,脚本文件和布局文件,数量随意,但每种。
3、至少要有一个:一个lua或一个xml。包含文件列表中的顺序对应着载入顺序,非常要紧!!!!如果要写中文,一定要将toc文件保存为UTF-8格式,否则无法正确识别。方法很简单:用记事本打开,另存为,选择编码就行;文件格式要选所有文件,否则会存成txt文件。建议你多下几个插件,打开看看,参考一下。XML——屏幕布局描述文件在魔兽插件中使用XML来描述UI的屏幕布局。注释符号:!--注释内容--。如果要写中文注释,必须在XML文件开头添加一行:?xmlversion=1.0encoding=UTF-8?XML文件主要内容一个XML文件往往包含以下内容:!--Ui标签是包含所有其它标签的根标签--Uixmlns=:xsi=:schemaLocation=:\Projects\WoW\Bin\Interface\FrameXML\UI.xsdScriptfile=localization.lua/!--在此载入用于汉化的lua文件--Framename=zBarparent=UIParent!--一个Frame框架--Scripts!--脚本部分,用于处理事件--OnLoadzBar_OnL。
4、oad();/OnLoadOnEventzBar_OnEvent(event);/OnEvent/Scripts/Frame/UiUi标签Ui是最上级标签。其中的schema用来语法检查,如果你的XML编辑器支持还可以用来代码提示。否则对我们来说用处不大。可以简化为:Uixmlns=:xsi=或者更加简化,不太规范但是可用:Ui布局内容/UiScript标签在Ui标签中最先包含的往往是Scriptfile=lua文件名/表示在此处载入某lua文件。注意这里也有顺序哦,如果发现变量、函数不存在,检查一下看是不是顺序问题。这样一来我们有了两种方法载入lua文件。在xml中载入lua实际上不是非如此不可的,有时候没必要用xml的就直接在toc中放个lua,把xml省掉。这样做你必须在lua中有个入口,也就是有个裸语句(不在任何function中的)进行事件注册或者调用函数。Frame标签XML中最主要的一个标签是Frame/Frame。所谓Frame意指框架,就是用来包含其他东西的。UIParent是最上层的框架,所有的UI都包含在其中。与之并列的是一个特殊框架WorldFrame,包括FP。
5、S、截图。其它控件一般都是Frame的子类,都包含类似的属性和子标签:背景、贴图、边框、事件处理。如:buttonsliderstatusbar等等。Frame标签就像一个透明的玻璃容器。你可以仅用它来装载其它部件,当然也可以给他添加贴图显示出来。记得游戏中按下“Alt+z”的效果了么,被隐藏的就是UIParent。容器被隐藏了,里面装的东西也就透明了。子标签和属性Framename=名称,唯一inherits=myFather继承toplevel=true等级parent=UIParent父标签id=编号movable=true可移动enableMouse=true允许鼠标事件frameStrata=HIGH层级hidden=false隐藏Size!--大小--AbsDimensionx=y=/!--绝对尺寸--/Size!--简化写法--Sizex=y=/Anchors!--锚点,用来标记相对位置--AnchorPoint=本控件的参考点relativeTo=参考控件relativePoint=参考控件的参考点Offset!--偏移值--AbsDimensionx=y=//Offs。
6、et!--简化写法--Offsetx=y=//Anchor/Anchors!--背景和边框--Backdropname=$parentBackdropbgFile=背景贴图edgeFile=边框贴图tile=不知道EdgeSizeAbsValueval=18/!--边框缩放大小--/EdgeSizeTileSizeAbsValueval=16//TileSizeBackgroundInsetsAbsInsetleft=5right=5top=5bottom=5/!--背景四周留白--/BackgroundInsets/BackdropLayers!--分层,主要放置贴图材质和字符--Layerlevel=BACKGROUND!--背景层--Texturename=$parentRedfile=贴图hidden=true//LayerLayerlevel=ARTWORK!--艺术层--FontStringname=$parent名字inherits=FontjustifyH=CENTER/Layerlevel=OVERLAY!--覆盖层--Texturename=$parentShine。
7、file=贴图alphaMode=ADD透明模式hidden=trueAnchorsAnchorpoint=CENTER//Anchors/Texture/Layer/LayersFrames!--嵌入其他框架--/FramesScriptsOnLoad处理载入事件/OnLoadOnEvent处理用RegisterEvent注册过的事件/OnEventOnUpdate更新事件/OnUpdateOnShow显示事件/OnShowOnHide隐藏事件/OnHideOnClick单击事件/OnClickOnDoubleClick双击事件/OnDoubleClickOnEnter鼠标进入/OnEnterOnLeave鼠标移出/OnLeaveOnDragStart拖放开始/OnDragStartOnReceiveDrag接受拖放/OnReceiveDragOnValueChanged值改变(用于Slider滑块)/OnValueChanged/Scripts/Frameinherits和parent的区别inherits继承,表示本控件未标明的属性全部继承自某某控件(包括事件处理脚本)。par。
8、ent父控件,表示依存关系,如果父控件隐藏了那么子控件也会隐藏。Anchor锚点中的定位规则Point自身参考点relativeTo参考控件relativePoint参考控件参考点比如一个正方形的按钮,AnchorPoint=LEFTrelativeTo=$parentrelativePoint=RIGHT/意思就是说:我的左边对父控件的右边。效果就是按钮始终在父控件的右边。UI对象的继承关系UIObject始祖,所有其他UI对象都由它继承。LayoutFrame布局框架,继承UIObject,主要有一些布局函数,(这是一个虚类不可创建实例)。LayoutFrame的重要函数:GetParent()SetParent()GetAlpha()SetAlpha()SetWidth()SetHeight()IsShown()和IsVisible()的区别IsShown()是否显示,表示一种属性:如果父对象可见的时候是否会显示。IsVisible()是否可见,表示当前状态:当前对象在屏幕上有没有显示。Frame框架,继承LayoutFrame,最重要的UI对象,屏幕上可见的UI对象都是它。
9、的子类,一般用来在上面放置其他控件。Frame的子类;描述Button;按钮。EditBox;可编辑文本框。GameTooltip;鼠标提示ColorSelect;颜色选择器MessageFrame;信息框架Minimap;迷你地图,小地图、战场地图等Model;模型,用于显示3D动画。人物模型,冷却都是ModelMovieFrame;影像框架,放电影的。。。不知道怎么用ScrollFrame;可滚动框架ScrollingMessageFrame;滚动信息框架,例如聊天窗口、战斗信息窗口SimpleHTML;简单超文本标记语言,应该是类似网页的可定义字体大小颜色式样、带图片的文本Slider;滑快,像系统设置中的UI缩放那个滑快StatusBar;进度条,像是施法条,血条等等LUA——脚本代码文件更深入的学习请阅读本站的其它文章:ProgrammingInLua,魔兽Api索引如果你有一门以上的语言基础,那么学习lua语言不是什么难事。lua是一种灵活的语言,关于他的来源我并不知道多少,只谈一下自己的感受。基本语法和Basic类似,或者说更像是Asp的脚本语言。
10、吧。但同时他又借鉴了Java的长处,更加的智能化、灵活。写法多样又方便不同习惯的人上手。lua语法很简单,相关资料也很多,我只列出需要注意的部分。基本语法摘要行注释符号:“--。
本文标题:WOW插件编写快速入手指南
链接地址:https://www.777doc.com/doc-6148829 .html