createEvent()
创建一个 frozen、opaque、typed Engine Event token。
签名
ts
function createEvent<TPayload = void>(name: string): EngineEvent<TPayload>;用法
ts
const selectionChanged = createEvent<Entity | null>('selection-changed');
const off = engine.onEvent(selectionChanged, (entity) => {
console.log(entity);
});
engine.emitEvent(selectionChanged, selectedEntity);
off();void Event 不需要 payload:
ts
const reset = createEvent('reset');
engine.emitEvent(reset);name 只用于诊断;token 的 object identity 是唯一频道事实,同名 Event 互不相同。dispatch 同步、registration-order、fail-fast。
SystemContext 与 ScriptContext 也提供 onEvent/onceEvent/emitEvent,订阅会受 owner effective gate 控制并随 owner 释放。