Hello World,我们的第一个IGAS插件

执行代码请使用Cube插件的编程模块。以下代码我会分块说明,执行时请一次复制一块,添加进你的输入框,前面的代码请不要删除,因为这些本来是一套完整代码,一次只执行一段,这样认识能够更深一点。以后的说明同样,不再多言。注意一些名词:

控件: 指框体类型,相当于常说的模板,不过因为面向对象化了,我直接称之为控件。

框体:实际存在的界面元素,也就是控件的实体,我们能够看到和使用的东西。

 


 

IGAS系统的一个特点就是,编程风格尽可能以前的常用风格一致。这样方便上手,也不容易和其他的开发库起冲突。下面是我们的第一个IGAS插件代码。

 

 


local CreateFrame = IGAS.GUI.CreateFrame

 

CreateFrame是BLZ提供的创建各种框体的API,这里将我们局部使用的CreateFrame指定为IGAS的CreateFrame,这样创建出来的控件就是IGAS系统的控件,而不是原始的。

 


local f = CreateFrame("Form", "TestF", UIParent)

 

CreateFrame的第一个参数是控件类型,这里我们创建一个Form框体,这个框体是一个普通界面,带有关闭按钮,标题头,边框可以拖动以放大或者缩小,简而言之,是一个配置界面的基础。

第二个参数是框体的名字,你可以不设置,那样系统会给它一个默认的名字,比如Form1, Form2,也就说,IGAS系统中所有控件都是有名称的,这点以后进阶部分讨论内存结构的时候,会做进一步说明。

第三个参数是指定父框体,简单来说,如果父框体隐藏了,那么所有子框体都会隐藏,以这个观点看就可以了。UIParent是一切框体的父框体,所以ALT+Z时,系统隐藏UIParent,而所有界面都隐藏了。当你省略这个参数时,默认就是UIParent。

那么,运行后,你会看到出现了一个标题是"Form"的框体。就在屏幕正中央。这条语句运行后,f 这个标识符就代表我们生成的这个框体了。我们可以开始调整 f 的属性来修改框体。

 


f.Caption = "Hello, World"

 

这里出现的Caption是框体的一个属性,它和框体的标题头相关。属性是IGAS系统相对于原始系统的一个特点,它为改变框体显示和其他行为提供了便捷的方式。

 


 

f.Width = 400

f.Height = 400

好的,更多的属性,WidthHeight属性分别代表框体的宽度和高度。现在框体看起来小很多了。

 


 

local button = CreateFrame("Button", "MsgBtn", f)

button.Width = 150

button.Height = 24

button.Style = "NORMAL"

button.Text = "Hello World"

button:SetPoint("CENTER", f, "CENTER", 0, 0)

唔,我们创造了一个Button按钮。这里多了两个属性StyleText, 这两个属性是前面的Form没有的,当然每种控件都有它们自己的属性列表。Style目前可以设置成 "NORMAL","CLOSE"。一个是你看到的普通按钮,另一个是关闭按钮,以后会再添加一些,方便使用。Text属性就是按钮上显示的文字。

那么看最后一句,这里没有使用 "." 而是 ":",现在,只要保持一个认识就可以了, "." 表示后面的是属性,":"表示后面的是方法。方法和属性没有什么使用限制,比如 button:SetText("Hello World") 和 button.Text = "Hello World"没有区别。

这里,我们调用了SetPoint方法,这个方法用于设置框体的位置。每个框体都有9个点用来标志自己的位置, 左上("TOPLEFT") 上("TOP")右上("TOPRIGHT")左("LEFT")中("CENTER")右("RIGHT")左下("BOTTOMLEFT")下("BOTTOM")右下("BOTTOMRIGHT"),这9个点从左到右,从上到下。那么设定框体自己的某个点和其他框体的某个点的相对坐标,就可以方便的确定自己的位置了。

比如这里,第一个参数"CENTER"指button的中点,第二个参数,指要参照的框体,这里就是f,第三个参数,参照的框体位置,也是中点。第四个参数是水平坐标,第五个是垂直坐标,你可以试试修改第4,5参数看看效果。

 


local msg = CreateFrame("PopupDialog", "MSG", f)
msg.Message = "Hello World"
msg.ShowNoButton = false

 

这段用来生成一个弹出窗口。当然你还看不见。

 


function button:OnClick()
    msg.Visible = true
end

 

好了,我们的最后一段,按钮我们可以点击,点击后,会触发按钮的OnClick事件,那么我们做处理时就如上做一个函数,函数定义为button:OnClick(),说明是button的OnClick事件处理函数。里面的代码很简单,Visible属性用于表示框体是否显示,这里设置为true后,前面制作的msg弹出窗口就出现了。

 


 

 

说明结束,制作这样的界面其实很简单,有过编程经历的估计很快就能上手,Cube插件的三个模块都是用IGAS制作的,如果感兴趣,可以将里面的代码拆出来,逐个运行看看。唯一注意的是,将CreateFrame的第二个参数修改下,免得Cube本身冲突了。

 

下面的介绍,就开始以系统为主了。我会先介绍衍生控件,就是我们一般使用的复杂控件比如树形控件,下拉框等,之后再是基础控件。最后开始高阶的,更核心代码的说明。谢谢你的耐心。

评论

可怜的皮卡丘

这个是皮卡丘,别跟枭兽K搞混了

顶, 终于出来了. 还是代码放一起看的清楚.

顶, 终于出来了. 还是代码放一起看的清楚.

恩,

明天买了本试试

这个其实是要配图的,不过想想按步骤跑下来一次,自己也就看到

这个其实是要配图的,不过想想按步骤跑下来一次,自己也就看到了,以后不会这样写了。还在考虑到底按什么顺序说明,先把基本概念总体说明一次,再继续吧。

不错不错...kk果然是才子

快年底了...忙完事...搬完家准备重新拾回插件....等我有空把wiki里的文档都浏览一遍...新的一年干劲十足哈哈...kk加油!有空指教指教哈

我不是KK

。。。不要老把Kurax和我混淆了,我们两个真够惨的。