39 lines
1.1 KiB
Markdown
39 lines
1.1 KiB
Markdown
# Emitter
|
||
Core提供了一个在某些关键时刻触发事件的发射器。 通过Core.emitter.addObserver和Core.emitter.removeObserver进行访问。 CoreEvents枚举定义了所有可用事件。
|
||
|
||
发射器类也可以在自己的类中使用。 您可以通过number,enum或任何结构键输入事件。
|
||
|
||
## 自定义事件发生器
|
||
|
||
- string为key的事件发生器
|
||
```typescript
|
||
export enum CustomEvent {
|
||
enum1,
|
||
enum2
|
||
}
|
||
|
||
export class MainScene extends es.Scene {
|
||
// string为key的事件发生器
|
||
private str_emitter = new es.Emitter<string>();
|
||
// number为key的事件发生器
|
||
private num_emitter = new es.Emitter<number>();
|
||
// enum为key的事件发生器
|
||
private custom_emitter = new es.Emitter<CustomEvent>();
|
||
|
||
onStart() {
|
||
// 监听触发器
|
||
this.str_emitter.addObserver("test", this.onStrEmit, this);
|
||
|
||
// 触发监听器
|
||
this.str_emitter.emit("test");
|
||
|
||
// 移除事件触发器
|
||
this.str_emitter.removeObserver("test", this.onStrEmit);
|
||
}
|
||
|
||
// args为emit传入的参数。不传则为空
|
||
onStrEmit(...args: any[]) {
|
||
console.log("test");
|
||
}
|
||
}
|
||
``` |