我有两个自定义 Sprite(在我的例子中,一个是 Sprite,另一个是 Container,但这并不重要)。我需要在一个 Sprite 中发出事件并在另一个 Sprite 中监听该事件 (MyDragableElement
)。在应用程序中,我有许多MyDraableElements: PIXI.Sprite
。
这个想法是第二个 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);
}
}
因此,正如您所看到的,这是一些 Sprite ,并且在拖动开始时,它应该发出全局事件。
这是另一个 Sprite,它应该监听此事件。
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);
});
}
}
}
以上是我的想法,但它不起作用。没有发送事件的经验。
最佳答案
我刚刚学习这个主题,可能是错误的,但是......
如果你有一些 Sprite
let mySprite = new Sprite(someTexture);
...您可以在代码中的某个位置编写下一个:
mySprite.emit('customEvent', {myData: 'somedata'});
您还需要在 Sprite 上为此 customEvent 设置事件处理程序:
mySprite.on('customEvent', onCustomEvent);
let onCustomEvent = (event) => {
console.log(event);
};
关于events - 像素 : create custom event in sprite and listen in another sprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64994552/