KineticJS - 移动精灵导致未知错误

时间:2012-06-12 20:13:44

标签: kineticjs

我正在尝试在KineticJS中编写代码来移动由包含其精灵的组所代表的单元(它是一个组,因为我可能想要在图形表示中添加更多东西)。

移动功能的代码是:

this.moveTo = function(x,y) {
distance = Math.sqrt((this.shape.getX() - x)*(this.shape.getX() - x)+(this.shape.getY() - y)*(this.shape.getY() - y));
time = distance / MOVEMENT_SPEED;
var sprite = this.sprite;
this.sprite.setAnimation('walkDown'); //TODO: change
this.group.transitionTo({
        x: x,
        y: y,
        duration: time,
        easing: "ease-in-out",
        callback: function(){
            sprite.setAnimation('idle');
        }
    })
}

如果没有行sprite.setAnimation('idle');,一切都会运作良好。有了这一行,大部分时间内一切仍然按预期工作(即动画在动作结束后停止)但有时精灵完全消失,我得到以下神秘错误信息:

  

错误:d未定义“在kinetic-v3.9.8.min.js第29行

为了测试,现在通过在屏幕上单击鼠标来调用moveTo。我认为这可能与我在前一次移动结束前单击鼠标有关,但有时即使我不小心也会发生错误。

编辑:当我在舞台边缘附近点击并且移动顺序命令单位“退出”时,大多数时间都会出现错误。尽管如此,除非我改变精灵动画并且我不理解连接,否则没有什么不好的事情发生。此外,我设法重现错误而不点击边界附近的任何地方,它只是更罕见。

1 个答案:

答案 0 :(得分:0)

解决。这与运动无关,就像我的大多数虫子一样,它非常尴尬。我只是忘了在将动画更改为'idle'时使用sprite.setIndex(),它只包含一个帧,而不是'walkDown'。

底线:sprite.setIndex()非常重要。