自动收报机内的 EaselJS 动画

EaselJS animation inside the ticker

我有一个用 EaselJS 制作的精灵:

var Hero = new createjs.Sprite(spritesheet, 'run');
Hero.die = function() {
        game.Ticker.removeAllEventListeners();
        Hero.gotoAndPlay('death');
});
stage.addChild(Hero);

在我的自动收报机里我有这样的东西:

if(heroCollideBullet) Hero.die();

但我只看到第一帧,精灵未更新。

有人可以解释为什么会这样吗?

这是因为您正在调用 Ticker.removeAllListeners(),这会删除正在调用 stage.update(evt)tick 的侦听器。需要 stage.update(evt) 调用来推进 Sprite 和重新渲染舞台。

我通常会强烈警告不要使用 removeAllListeners(),因为它可能会产生意想不到的结果(像这样),而是单独删除侦听器。