2014-10-05 2 views
1

내가 가지고있는 게임에서 플레이어가 숫자를 따라 "m"키를 누르면 스프라이트의 한 프레임을 건너 뜁니다. 명확히하기 위해 는, 다음은 내가 프레임이 변수에 프레임의 위치를 ​​저장하여 변경해야 할 때 추적 유지하는 데 사용할 내 코드입니다 : 그래서스프라이트를 통과하여 배경 위치 저장

function animateStar() { 
    var pos = 0; 
    $(document).keyup(function(e) { 
     if (e.keyCode == 77) { 
      pos -= 32; 
      $('#n1').css('background-position', pos+'px -0px'); 
      } 
    }); 
} 

당신이 매번 키 코드를 볼 수 77 ("m"을 나타내는)을 누르면 프레임이 높이와 너비가 각각 32px이므로 프레임이 변경됩니다.

그러나 내가 겪고있는 문제는 플레이어가 오브젝트에서 멀어져 돌아 왔을 때, 그가 중단 한 곳에서 계속하는 대신 프레임이 건너 뜁니다. 내 스프라이트 시트가 숫자로 구성되어 있기 때문에 http://jsfiddle.net/j40s8gjt/

, 당신은 코드와 함께 무엇을 볼 수 있어야합니다 :

여기 내 코드입니다. 프레임을 3 ~ 5 사이의 숫자로 설정하고 오브젝트에서 멀어지면 다시 m 키를 누르면 모든 것이 다시 반복되는 것을 볼 수 있습니다.

플레이어가 퇴장 할 때 개체의 현재 위치를 저장할 수있는 해결책이 있지만이를 수행하는 방법을 모르겠습니다.

나는 충분히 명확 해 졌으면 좋겠다. 고마워!

답변

0

animateStar()으로 전화 할 때마다 기본값이 0이므로 다시 시작합니다.

현재 위치를 움켜 쥐는 것은 매번 기본값 0 대신 수행해야하는 작업입니다. 이것에

var pos = 0;  

: animateStar()에서

이 줄을 변경

var pos = $('#n1').css('background-position').split('px ')[0] || 0; 

대신 다시 0에서 시작 프레임을 재설정, 시작 때 현재 위치를 가져옵니다 그런 식으로.

예제 : http://jsfiddle.net/j40s8gjt/2/

+0

고마워요! 정확히 내가 무엇을 찾고 있었는지 – NotToBrag