2012-06-12 8 views
1

스프라이트가 포함 된 그룹으로 표시된 유닛을 이동시키기 위해 KineticJS에 코드를 작성하려고합니다 (그래픽 표현에 더 많은 것을 추가 할 수 있으므로 그룹입니다).KineticJS - 알 수없는 오류가 발생하는 스프라이트 이동

이동 함수의 코드는 다음과 같습니다 라인 sprite.setAnimation('idle'); 모든없이

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'); 
     } 
    }) 
} 

는 잘 작동합니다. 이 라인의 모든 여전히 (애니메이션이 운동이 종료 된 후 정지 IE)하지만 때로는 스프라이트가 모두 사라지고 난 다음 암호 같은 오류 메시지가 얻을 대부분의 시간을 예상대로 작동합니다 : 테스트의 목적을 위해

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

을 , 지금 moveTo는 화면에서 마우스를 클릭하여 호출됩니다. 나는 이전 움직임이 끝나기 전에 마우스를 클릭하는 것과 관련이있을 것이라고 생각했지만 때로는 오류가 발생하더라도 조심하지 않을 때도 발생합니다.

편집 : 스테이지의 가장자리 근처를 클릭하면 이동 오류가 발생하고 이동 순서는 "out"단위로 이루어집니다. 스프라이트 애니메이션을 변경하고 연결을 이해하지 못하면 아무 일도 일어나지 않습니다. 또한 국경 근처를 클릭하지 않고도 오류를 재현 할 수있었습니다.

답변

0

해결되었습니다. 이것은 움직임과 관련이 없으며, 대부분의 버그와 마찬가지로 매우 당혹 스럽습니다. 나는 'walkDown'이 아니라 한 프레임 만 포함하는 'idle'으로 애니메이션을 변경할 때 sprite.setIndex()를 사용하는 것을 잊어 버렸습니다.

결론 : sprite.setIndex()가 중요합니다.

관련 문제