所以,我通过扩展形状在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
类的实例。
有没有办法将该事件传播到舞台中的所有对象?我在文档中找不到任何有用的信息。
答案 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);
希望有所帮助。