我是EaselJS的新手。我正在学习过时的教程。我想在一个舞台上放置编号的正方形,然后点击它们时让它们消失。
原始代码有一个onPress事件,我已将其修改为点击侦听器。但是我收到一条关于"这个"的范围的错误消息。我的点击处理程序中的对象。
TypeError: this.stage is undefined
我做错了什么?
c99.Game = (function() {
function Count99Game(){
this.canvas = document.getElementById('game-canvas');
this.stage = new createjs.Stage(this.canvas);
var totalTiles = 10;
for(var i = totalTiles; i>0; i--){
var tile = new c99.Tile(i);
this.stage.addChild(tile);
tile.x = Math.random()*(this.canvas.width - tile.width);
tile.y = Math.random()*(this.canvas.height - tile.height);
tile.addEventListener("click", function(event){
this.stage.removeChild(event.target);
this.stage.update();
}).bind(this);
}
this.stage.update();
}
return Count99Game;
})();
答案 0 :(得分:5)
在EaselJS的click
处理程序中,this
是window
对象。您需要将bind
调用移动到侦听器函数本身:
tile.addEventListener("click", function(event){
this.stage.removeChild(event.target);
this.stage.update();
}.bind(this));
您还可以使用Shape.on
手动设置处理程序this
:
// pass outer `this` to event listener
tile.on("click", function(event){
this.stage.removeChild(event.target);
this.stage.update();
}, this);