单击easeljs中的形状处理程序

时间:2014-05-31 08:04:14

标签: javascript jquery easeljs

我是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;
})();

1 个答案:

答案 0 :(得分:5)

在EaselJS的click处理程序中,thiswindow对象。您需要将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);