2012-06-12 33 views
1

我想在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');一切正常。有了這一行的一切仍然按預期工作的大部分時間(即動畫停止運動結束後),但有時精靈完全消失,我得到下面的神祕的錯誤消息:

Error: d is undefined" in line 29 in kinetic-v3.9.8.min.js

出於測試的目的,現在moveTo通過點擊屏幕上的鼠標來調用。我認爲這可能與我在前一次移動結束之前單擊鼠標有關,但有時甚至在我小心翼翼地不做時也會出現錯誤。

編輯:錯誤發生在大多數時候,當我點擊舞臺邊緣附近,移動順序命令單元「出」它。儘管如此,除非我更改精靈動畫並且我不瞭解連接,否則沒什麼不好。此外,我設法重現錯誤,無需點擊邊界附近的任何地方,它只是更加罕見。

回答

0

已解決。這與運動無關,而且像我的大多數錯誤一樣,這非常令人尷尬。我簡單地忘記使用sprite.setIndex()將動畫更改爲僅包含一幀的「空閒」,而不是「walkDown」。

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