我正在尝试在 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。我认为这可能与我在上一个动作结束之前单击鼠标有关,但有时即使我小心不这样做也会发生错误。
编辑:当我在舞台边缘附近单击并且移动命令命令单元“退出”它时,大部分时间都会发生错误。尽管如此,除非我更改精灵动画并且我不了解连接,否则不会发生任何不好的事情。此外,我设法在不单击边界附近的任何地方的情况下重现了该错误,这种情况更加罕见。