框架的代码主要放在system,syscn和main三个文件夹中,system是系统核心代码,syscn是定义展示菜单以及一些插件的代码,main的游戏的自定义代码,main里的代码各个游戏都会不同。 研究了这个框架进行之后,确实是存在一些模块的功能是可以学来用的。
1.action模块
定义在action.tjs的位置,这个模块的功能是控制动画效果,定义了PropActionInfo、ActionSequense、ActionTargetInfo几个类把动画拆分成具体的属性,动画的序列以及不同的对象,kagwindow的基类继承action的基类,然后kag的filpstart方法使用addContinuousHandler来添加具体的动画,比起定时器控制的动画可以做到逐帧的精确控制,基本上大部分的动画行为都是由此模块控制的。
2.uiloader模块
通过定义在uiloader.tjs的方法加载ui信息,使用定义在system.tjs的 DialogModeManager来控制具体的ui行为。主要是使用CSVPaser加载ui的定义文件,定义文件使用分隔值文件的形式定义各个按钮的位置,行为,种类,一般csv后缀定义位置,func后缀文件定义行为。类似下面的就定义了消息框下面的快速菜单的按钮:

然后DialogModeManager提供kag解析的标签,指定生成ui时会按文件中的定义生成指定的按钮加载到当前的消息层上,并生成一个控制ui的对象。
3.系统的钩子模块
在system.tjs中定义,基类是SystemRegistory,类似一个注册表的东西,主要有三个子类,分别管理系统的脚本,系统的文件和系统的钩子。例如钩子可以定义剧本文件跳转时触发的函数,想定义从标题跳到菜单,就加一个"option.from.title"的钩子,然后会从系统文件的注册表中取文件,取到的话会发生跳转这样一个功能。