MiniExtend Event

对应源文件: event.lua, ui_main.lua


MiniExtend Event 的前身是 ScriptSupportEvent ,但更便于使用,支持 MiniExtend Object


registerEvent(eventname, callback, [, uiid]) 函数

监听游戏事件,在 eventname 所描述的事件发生时,回调 callback
返回描述事件监听的 Register,用于取消事件监听。

如果 eventname 所描述的事件为 UI 事件,需要指定 uiid 需要监听的 UI 界面 id 。
监听 UI 事件会发生预绑定,常规流程(在第 0 帧和 ui_main 脚本前)不会真的监听事件,而是将信息存储在返回的 Register 表中(不含 id 值,暂存了临时值)。
在对应的 ui_main 脚本执行后会完成绑定并完成 Register 表(移除临时值,赋值 id),在中途修改返回的 Register 可能导致错误。

该函数是 MiniExtend Event 的核心。
该函数的原型为 ScriptSupportEvent:registerEvent(msgStr, func)

参数

以上参数都会被检查,如果参数不正确则会报错。

回调


cancelRegisterEvent(register) 函数


自定义事件名

下文将事件名简称 eventname ,原始事件名称为 msgStr
需要使用 msgStr 作为参数调用 API ,但 MiniExtend 提供了更简短,可读性更高的自定义事件,于是就有了 eventname ,它作为调用 registerEvent() 时实际传入的参数。

既可以使用 MiniExtend 自定义事件名,也可以使用 API 事件名。
MiniExtend 自定义事件名在 event.lua 中的 CustomEvents(局部变量) 中定义。

如果 eventname"$" 开头,则认为其为 MiniExtend 自定义事件名,否则为 API 事件名。
如果为 MiniExtend 自定义事件名,则 msgStr = CustomEvents[eventname];
否则对于 API 事件, msgStr = eventname;

自定义事件名列表

以下忽略了 "$" 前缀:

你会发现这些自定义事件名描述的都是 UI 事件,实际上通常通过 MiniExtend UI 监听这些事件。
注: 点击 = 按下 + 释放(目前无法监听该事件),按下事件不是延续性事件,只会在玩家开始按下的那一帧触发。


Register

Register 表是 registerEvent() 的返回值,用于作为 cancelRegisterEvent() 的参数来取消事件监听。
注意 Register 表是 MiniExtend 理论中的一个表,_GScriptFenv_["&Register"]nil

不要修改 Register 表的值,仅将整个表作为参数调用 cancelRegisterEvent(),以下内容只是为了方便开发者

以下值是内部使用的临时值,在预绑定期间才会存在。