1

我正在尝试在 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。我认为这可能与我在上一个动作结束之前单击鼠标有关,但有时即使我小心不这样做也会发生错误。

编辑:当我在舞台边缘附近单击并且移动命令命令单元“退出”它时,大部分时间都会发生错误。尽管如此,除非我更改精灵动画并且我不了解连接,否则不会发生任何不好的事情。此外,我设法在不单击边界附近的任何地方的情况下重现了该错误,这种情况更加罕见。

4

1 回答 1

0

解决了。这与运动无关,并且像我的大多数错误一样,非常尴尬。我只是忘记使用 sprite.setIndex() 将动画更改为仅包含一帧的“空闲”,而不是“walkDown”。

底线: sprite.setIndex() 很重要。

于 2012-06-13T05:54:53.987 回答