我在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);
希望能有所帮助。