【饥荒随笔】类与界面

来源:互联网 发布:开源微信商城java源码 编辑:程序博客网 时间:2024/03/29 23:27

饥荒采用面向对象的编程范型,其核心是class 文件,利用lua元表,实现类的继承。

在饥荒里有着千奇百怪的类,动物是类,界面是类,连地图也是类,看饥荒的源码,主要把握各个类之间的继承与关系,弄清楚在什么时候需要用到哪一个类,这个变量试试哪个类的实例,它继承了类的哪些方法,又有什么属性可以调用。

        

         Widget和screen 两个文件夹是关于界面的,每个文件其实都定义了一个类,它们都有着共同的一个基类——widget,定义在widget/widget.lua 里。

         而screen 继承了widget,两种文件结构基本相同。

         继承了screen 的子类,会在其它的文件或其它的screen里被调用,我不可能一个个讲,我讲一些典型的,剩下的以此类推过去吧。

 

 

用TheFrontEnd:ShowScreen(ScreenClass(…)) 可以在游戏上显示一个界面,具体层次由各个文件决定。

 我们饥荒在无安装任何mod时,第一个载入的界面是mainscreen  而 当我们有安装mod或者代码出现错误时,会显示scripterrorscreen   。

 

 注:并不是所有的错误都会显示错误界面,而是代码错误不“危害全局”时才显示错误,不然会直接闪退或者显示某某内存不能读写,如果出现这种情况,原因也就那三四个,等以后整理一下发出来。

 

额,扯远了(其实我还想再扯一下的),用

TheFrontEnd:ClearScreens()

可以消除当前所有显示的界面,调用的资源全部会被GC(垃圾处理),这样可以省点内存,当因您的界面出现内存溢出是,这个函数是一个好的选择。

 

不过,调用这个函数时,界面会被全部清除,所以接下来要紧跟一个

TheFrontEnd:ShowScreen()

函数,不然会出现黑屏现象。

 

以上内容,请参阅gamelogic.lua和mainfunction.Lua.

0 0