我正在使用easyljs创建舞台,然后将瓷砖放在随机位置的舞台上。用户单击图块时,必须将其从舞台上删除。
我面临两个问题。首先是鼠标事件不起作用。代码“ tile.onPress =(tileOnPress).bind(this);”所以我改用了addEventListener方法。现在,尽管在我在控制台上获取输出时正在调用该函数,但并没有从舞台上删除磁贴。
这是代码:

c99.Game = (function(){
function Count99Game() {
    console.log("Count 99 game starts");

    this.canvas = document.getElementById('game-canvas');

    this.stage = new createjs.Stage(this.canvas);

    var totalTiles = 10;

    var tileOnPress = function(event) {
        console.log("Pressed");
        this.stage.removeChild(event.target);
        this.stage.update();
    };

    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.onPress = (tileOnPress).bind(this);
        tile.addEventListener("click", tileOnPress.bind(this));
    }

    this.stage.update();
}

return Count99Game;
})();


如果有人能告诉我为什么“ tile.onPress =(tileOnPress).bind(this);”,我将不胜感激。无法正常工作,还需要在tileOnPress函数中进行哪些更改,以便可以从舞台上删除被按下的图块。

完整的代码可以在https://github.com/ZANTGames/count99/blob/master/js/count99-game.js中找到

最佳答案

尝试这个

this.stage.removeChild(event.target.parent)


这是因为event.target是shape,其父对象是tile,并且基本上您想删除tile才能正常工作

供您将来参考,我已从本文档中找到它
http://www.createjs.com/docs/easeljs/classes/Stage.html

关于javascript - removeChild()在使用easyljs时不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30682015/

10-15 15:10