回调表是脚本注册相应的回调函数,供发生特定的事件的时候调用的对象。
你可以在脚本中访问callback对象来访问插件的回调表,也可以使用简写i来访问访问。
回调表的作用域对于脚本来说是全局的,不必预先声明就可以调用的。
注册回调函数
使用
//下面两个中任意一个均可
callback.<type>(<group>, <paramList>);
callback.group(<group>).<type>(<paramList>);
的语法,可以把函数注册到回调表中。
其中<type>是回调表的类型,<group>是回调表组名称(下面有说明,可以为null),<paramList>是具体的参数列表。
插件可以注册到回调表的函数主要有四类:hotspot,tick,entry,exit。
hotspot类型
[指定画布某一方形区域为热区域,当用户点击这一块区域的时候,就会调用注册的回调函数。
//下面两个中任意一个均可
callback.hotspot(<group>, <name>, <x1>,<y1>,<x1>,<y2>);
callback.group(<group>).hotspot(<name>, <x1>,<y1>,<x1>,<y2>);
参数列表中:
- name:将要被注册的回调函数的名称
- x1:热区域起始点的x坐标。
- y1:热区域起始点的y坐标。
- x2:热区域终止点的x坐标。
- y2:热区域终止点的x坐标。
你注册的hotspot回调函数需要形式如下:
function <name>(x, y, who) {...}
参数列表中:
- x:玩家点击的x坐标。
- y:玩家点击的y坐标。
- who:哪个玩家点击的。
tick类型
当游戏画布发生更新(一般是游戏刻更新)时,就会调用注册的回调函数。
//下面两个中任意一个均可
callback.tick(<group>, <name>);
callback.group(<group>).tick(<name>);
参数列表中:
你注册的tick回调函数需要形式如下:
function <name>() {...}
entry和exit类型
当进入某个状态时,会调用entry类型的函数。
//下面两个中任意一个均可
callback.entry(<group>, <name>);
callback.group(<group>).entry(<name>);
参数列表中:
当退出某个状态时,会调用exit类型的函数。
//下面两个中任意一个均可
callback.exit(<group>, <name>);
callback.group(<group>).exit(<name>);
参数列表中:
你注册的tick回调函数需要形式如下:
function <name>(prestate, poststate) {...}
参数列表中:
- prestate:退出的状态。
- poststate:进入的状态。
回调表组
在前面的例子中可以看到,注册回调函数的时候,你可以将它注册到特定的回调表组中。
注册到某一回调表组中的函数,只有在当前回调表组为该组时,才会发生作用。
你可以通过callback.change(<group>);切换回调表组。其中group是组名。
还记得我们在3.2中讨论的根据状态机来设计游戏么?
在游戏设计游戏的时候,我们将游戏划分为一系列状态,并且规定了不同状态的动作。
在API中,我们一般认为回调组名代表的就是当前的状态。
entry动作对应entry类型的回调函数,exit动作对应exit类型的回调函数。
do动作对应tick类型的回调函数,而各种触发由hotpost来监听,并且通过change函数来转换。
|