dispatchEvent()
是Yuka.js中EventDispatcher类的一个方法,用于向注册在该事件调度程序(EventDispatcher)中的所有侦听器发送事件。
dispatchEvent( event: Event ): this
event
:要发送的Event
对象。EventDispatcher
实例。所有实现EventDispatcher接口的对象都有一个dispatchEvent()
方法,该方法用于向事件的所有注册侦听器(listener)发送Event
事件。
Yuka.js的dispatchEvent()
方法会首先在当前对象上面寻找具有匹配eventType
类型的侦听器,如果当前侦听器的dispatcher
属性指向当前对象,则直接调用当前侦听器的处理器方法。
如果当前对象上未找到匹配事件类型的侦听器,则事件调度程序会将事件一层一层地向上传递,直到事件到达“舞台”(stage)或根对象才会终止传递。
import { EventDispatcher, Event } from 'yuka';
class Player extends EventDispatcher {
constructor() {
super();
this.health = 100;
}
attack() {
this.health -= 10;
this.dispatchEvent( new Event( 'healthChanged' ) );
}
}
let player = new Player();
player.addEventListener( 'healthChanged', ( event ) => {
console.log( `Player health changed to ${event.target.health}!` );
});
player.attack(); // 输出 "Player health changed to 90!"
上述示例中,Player
类继承了EventDispatcher
,并在其attack()
方法中触发了一个新的healthChanged
事件。接下来,我们使用addEventListener()
方法在player
实例上注册了一个事件侦听器,该侦听器在每次healthChanged
事件发生时都会在控制台中输出当前Player
对象的健康状态。最后,我们调用player.attack()
方法,传递了一个十点伤害值给Player
对象,并触发了healthChanged
事件,输出结果为“Player health changed to 90!”。