events - 像素 : create custom event in sprite and listen in another sprite

标签 events pixi.js

我有两个自定义 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/

相关文章:

javascript - 确定错误是浏览器的错误还是我自己的错误的工作流程是什么?

c# - 尝试在 C# 中执行按键事件时出错

jquery - 悬停滚动,点击速度

javascript - 在 PIXI.js 中正确制作简单图形的动画

javascript - PIXI.js AnimatedSprite 在第一次播放时滞后

javascript - 放大子元素 PixiJS

wpf - 如何在 WPF 中的 ListBox 中的项目上捕获鼠标单击?

jquery - 使用 jQuery 触发从一个页面到另一个页面的事件

objective-c - 如何确定哪个 UIControlEvents 类型导致了 UIEvent?

javascript - WebGL 在逐像素操作中使用库的速度是否更快?