事件
游戏中对象的通信方式
框架中的事件对象类型是 mk.EventTarget,继承于 cc.EventTarget,且所有接口都是类型安全的 📦
创建事件对象#
interface EventType {
/** 测试事件 */
test: (
/** 测试参数 */
num: number
) => string;
}
const event = new mk.EventTarget<EventType>();
事件派发#
event.emit(event.key.test, 123);
事件监听#
当使用 emit 派发事件时, 可以使用 on 或 once 接口监听指定的事件派发
const onTest = (): void => {
// ...事件回调逻辑
};
event.on(event.key.test, onTest, this);
事件注销#
当想要取消 on 和 once 注册的事件回调时,可以使用 off 和 targetOff 取消事件监听
// 取消类型为 test 的事件
event.off(event.key.test);
// 取消类型为 test 且回调函数为 onTest 的事件
event.off(event.key.test, onTest);
// 取消类型为 test 且回调函数为 onTest 且事件目标为 this 的事件
event.off(event.key.test, onTest, this);
// 取消所有事件目标为 this 的事件
event.targetOff(this);
事件请求(框架扩展)#
事件请求接口 request 相当于 emit,但是可以获取 on 或 once 回调函数的返回值
Promise.all(event.request(event.key.test, 123)).then((resultList) => {
// 所有 test 类型事件的返回值
console.log(resultList);
});