pixijs:在精灵中创建自定义事件,并在另一个精灵中侦听



我有两个自定义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);
};

相关内容

最新更新