我有两个自定义Sprite(在我的例子中是Sprite,另一个是Container,但这无关紧要(。我需要在一个精灵中发射事件,并在另一个精灵(MyDragableElement
(中侦听它。在应用程序中,我有许多MyDraableElements: PIXI.Sprite
。这个想法是第二个精灵将能够在MyDragableElement
上操作,但它应该知道选择了哪个元素。我决定事件可以在这里有所帮助,但这应该如何用Typescript写呢?
export class MyDragableElement extends PIXI.Sprite {
constructor(
super();
this
.on('pointerdown', this.onDragStart)
.on('pointerup', this.onDragEnd)
.on('pointerupoutside', this.onDragEnd)
.on('pointermove', this.onDragMove);
}
private onDragStart(event) {
this.emit('selectedElementChanged', this);
}
}
所以,正如您所看到的,这是一个精灵,在拖动启动时,它应该会发出全局事件。
这是另一个精灵,它应该听这个事件。
export class Toolbar extends PIXI.Container {
selectedGameObject: any;
constructor()
{
super();
this.addListener("selectedElementChanged",
(e:any) => {
// this.selectedGameObject = need to select this element
console.log(e);
});
}
}
}
以上是我的想法,但已经行不通了。没有发射事件的经验。
我刚刚学习了这个主题,可能会错,但是。。。
如果你有一些精灵
let mySprite = new Sprite(someTexture);
你可以在代码的某个地方写下一个:
mySprite.emit('customEvent', {myData: 'somedata'});
您还需要在您的sprite上设置此customEvent的事件处理程序:
mySprite.on('customEvent', onCustomEvent);
let onCustomEvent = (event) => {
console.log(event);
};