让扩展形状类听舞台上使用的自己的事件



我在EaselJS中通过扩展如下形状创建了播放器类:

var Player = createjs.extend(function Player (color, x, y) {
    this.Shape_constructor();
    this.x = x;
    this.y = y;
    this.graphics.beginFill(color).drawCircle(0, 0, 10);
}, createjs.Shape).constructor;
createjs.promote(Player, 'Shape');

我想让我的播放器听stagemousedown事件,但我不知道如何访问它,因为它只能应用于Stage类的实例。

有没有办法将该事件传播到该阶段中的所有对象?我在文档中找不到任何有用的信息。

阶段的任何子级都可以使用getStage()方法访问该阶段。这将在构造函数中返回null(因为在使用addChild之前,子级不在舞台上。

我建议让你的孩子可以访问一个阶段变量(全局是一种简单的方法),然后在那里听。

// In the global scope
var stage = new createjs.Stage("canvasId");
// Or put it in the global scope
window.myStage = stage;

然后任何孩子都可以访问它。

stage.on("stagemousedown", handleStageClick);

完成后记得清理这些监听器,否则它们就会堆积起来。on方法在后台创建了一个方法绑定,因此您必须将其存储起来以便稍后删除。

this.listener = stage.on("stagemousedown", handleClick);
// On clean-up
this.off(this.listener);

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新