2010-03-07 5 views
1

jQuery는 예를 들어 일종의 애니메이션을 처리 할 수 ​​있다는 것을 알고 있습니다. 또한 애니메이션의 핵심에서 애니메이션을 수행하는 일종의 루프가 필요하다는 것을 알고 있습니다. 그러한 루프의 예는 무엇입니까?애니메이션 루프의 기본 구문은 무엇입니까?

완전한 대답은 이상적으로 다음 질문에 대답해야합니다

  • 한 번에 특정 객체의 하나의 속성에 애니메이션을 적용 할 수있는 효과적인 애니메이션 재귀에 대한 기본 구문은 무엇입니까? 이 함수는 객체의 대상 객체와 속성을 변경할 수 있어야합니다.
  • 어떤 인수/매개 변수를 취해야합니까?
  • 루프를 반복하는 좋은 범위는 무엇입니까? 밀리 세컨드? (이 함수에 매개 변수/인수해야 하는가?)

기억 :

  • 대답은 반드시 특정 언어가 아니라 특정 언어로 작성하는 경우, 어느 하나를 지정하십시오.
  • 오류 처리는 장점입니다. {중간에 멈추는 것과 같이 이상한 일을하는 애니메이션보다 더 짜증나는 일은 없습니다.}

감사합니다.

+0

jQuery는 오픈 소스이므로 다른 사람들에게 당신을 위해 일하도록 요청하는 대신 이미 사용 가능한 코드를 살펴 보시기 바랍니다. – meagar

+0

@meagar - jQuery 코드를 읽는 데 어려움이 있습니다. 이유가 확실하지 않습니다. 그래도 너 한테 줄께. – Moshe

답변

1

(일반적으로 jQuery의 경우) 이는 루프에서 수행되는 것이 아니라 일련의 콜백에서 수행됩니다.

pseudojavascript :

function startAnimation(element, endPosition, duration) { 
    var startPosition = element.position; 
    var startTime = getCurrentTime(); 
    function animate() { 
     var timeElapsed = getCurrentTime() - startTime; 
     if (timeElapsed > duration) { 
      element.position = endPosition; 
      stopTimer(); 
     } else { 
      // interpolate based on time 
      element.position = startPosition + 
       (endPosition - startPosition) * timeElapsed/duration; 
     } 
    } 
    startRepeatingTimerWithCallbackAndInterval(animate, 1.0/30.0); 
} 

그것은 폐쇄하는 대신 데이터를 시작 저장하는 객체를 사용하는 것도 가능합니다.

이것은 질문의 모든 부분에 완전히 대답하지는 않지만 출발점입니다.

+0

* using namespace my.knowledge; "클로저"== 정의되지 않음 * ** 영어 : ** "클로저"가 무엇을 의미하는지 모르겠습니다. – Moshe

+0

클로저는'startAnimation'이 반환 된 후에도'startAnimation' 내부의 지역 변수에 접근 할 수있는'animate' 함수를 가리 킵니다. http://www.javascriptkit.com/javatutors/closures.shtml에는 자바 스크립트에있는 몇 가지 예가 나와 있습니다. – cobbal

+0

Cobbal - 고맙습니다. – Moshe

관련 문제