《饥荒补遗》
本文来自:
-------------------------------------------------------------------------------
-
联系方式:
QQ:1486276329,1723386660
Email:1486276329@qq.com
blog:
http://www.cnblogs.com/czfblog/
阅读本文如有不解之处,请联系我!
小帆 著
14 年 1 月 31 日.
第三章:分析界面
在前一章,我们主要讲的是主界面,现在我们来讲一下在游戏过程中的界面.
我们先来分析一下两个 mod 的界面(注:在这一章里所讲的主界面是指 mod 的主界
面而不是饥荒游戏的主界面)
CJBModsTMI
和
testtools
打开 CJBModsTMI(以下简称 C!),的原文件夹,找到 tmiscreen.lua 文件,它的界面
就是这个定义在这个文件里的.
它导入了两个自定义的自定义的部件, Inv 和 HoverText,
一个是用来显示那些格子的,一个是用来显示文字的,这样可以把一个界面分成
几个部分,代码看起来就不会太复杂,我们可以一部分一部分的看.
主界面增加了背景,导入了两个自制的控件,增加了一个关闭按钮.
下面我们来看一下关闭按钮的事件函数
这个应该就是一个标准的关闭函数了,首先把暂停去掉,把主界面删掉,前台显示
的界面设置为空.
我们继续看一下这个主界面的其余函数,
几个很简单的函数.
在这个 mod 的 modmain 文件里,创建了一个新的 timkeyHand 类 这个类里拥有一个
keyHandler 的实例,他有一个自定义函数, OnRawKey.
keyHandler 是 Input(输入)类的一个子类,他的构造函数函数为
TheInput: AddKeyHandler(fn)
TheInput 是一个 Input 类的实例,这个函数接受一个函数作为参数,生成一个新的
事件,并向这个参数函数(fn)传递两个参数 key, down.
饥荒游戏的运行中,我们每一次按下键盘,或者移动鼠标等,都会被 Input 捕获,并处理
input 分析事件类型,(比如是按下键盘,还是点击鼠标)并调用对应的事件列表,
onkey,----键盘事件(包括按下和弹起)
onkeyup ----键盘被弹起
onkeydown ---键盘按下
onmouseup ----鼠标按下
onmousedown ---鼠标弹起
position ----位置改变
oncontrol ---窗口控制权改变
ontextinput ---文本框
ongesture ---手势(这个在 pc 版的饥荒里没有使用)
调用对应的事件列表,并再次判断具体的事件类型(比如是 A 键,T 键被按下还是任意
键被按下)把所有符合的事件函数调用.
继续讲这个 mod,modmain.lua 创建了一个新的 KeyHandler 类,事件类型为 onKey,见
input.lua
在 modmain.lua 里只是增加了一个类,还要创造一个实例才能用.
这一句创建了一个新的实例.
testtool 这个 mod 比较复杂.它的主窗口文件为,testscreen.lua.
我们主要看 doinit 函数.
普及一下
Spinner 就是
控件,他的构造函数为
options 是一个型如
width,height,宽度,高度.
textinfo 主要是用来控制中间字体的,它是一个型如
的表
的表.
sditable 是一个布尔值,为 true 时,中间文本可以编辑.缺省为 false.
atlas 和 texttures 是用来改变图片的.
doinit 函数,首先设置背景和底板.我就不讲了
之后创建菜单列表,#1
再创建所有的 Spinner 控件.#1
把所有的 Spinner 加入 spawning_spinners 表里,并增加文本提示.#2
主界面设置 spinners 为 spawning_spinners#3.
#1
#2
#3
回过头来继续讲一下 Spinners
每个 Spinners 控件,内容改变时,都会调用 Changed 函数,并将显示文本对应的 data
值传入 onchanged 函数.
每一个 Spinner 都有一个默认的 onchanged 函数,
不过我们可以重新定义这个函数,增加功能.