使扩展形状类听取stagemousedown事件

时间:2015-12-27 22:46:15

标签: class javascript-events event-handling easeljs

所以,我通过扩展形状在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类的实例。

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

1 个答案:

答案 0 :(得分:0)

舞台上的任何孩子都可以使用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);

希望有所帮助。