2012-03-03 5 views
0

나는 그 자체로 반복되는 기능을 가지고있다. 나는 아직도이 일이 어떻게 돌아가는지에 관해 머리 글자를 쓰고있어. 그리고 너가 도울 수 있기를 바란다.이 간단한 루핑 함수를 만드는 방법은 무엇입니까?

기본적으로 나는이 루프 자체 곳 'animation_duration는'그것이 내가 함수의 호출에 넣어 어떤 숫자와 끝까지해야 함수 내에서 발생해야, 내 머리에서 다음과 같은 기능을

function parachute_drop(animation_duration) { 
$('#parachute_wrap_2') 
     .animate({top: "750px"},animation_duration) 
     .animate(
      {top:"-150px"}, 
      {duration: 0, complete: parachute_drop("'+animation_duration+'")} 
     ); 
} 

parachute_drop(90000); 

있습니다.

이상 90 초 이상, 낙하산은 750px로 떨어집니다. 그런 다음 0ms의 공간에서 화면 상단에서 -150px로 이동합니다. 내가 할 것 인 경우에

는 :

parachute_drop(1000); 

다음이 루프는 1 초마다 일어날 것입니다.

여기서 함수에 대해 이해하지 못하는 것은 무엇입니까? 이처럼 일부 변수에 '완전한'함수를 넣을 수 없습니까? 나는 그것이 'animation_duration'부분을 함수에서 완전히 꺼낸 다음 고정 된 기간을 넣어서 잘 동작한다는 것을 안다. 예를 들어

다음 작품 :

function parachute_drop() { 
$('#parachute_wrap_2') 
     .animate({top: "750px"},9000) 
     .animate(
      {top:"-150px"}, 
      {duration: 0, complete: parachute_drop} 
     ); 
} 

parachute_drop(); 

...하지만 내 기능은 사용자 정의 변수 옵션이 없습니다. 어떤 포인터 주셔서 감사합니다.

답변

4

이 뜻입니까? (범위 바인딩 익명 기능)

function parachute_drop(animation_duration) { 
    $('#parachute_wrap_2') 
     .animate({ top: "750px" }, animation_duration) 
     .animate({ 
      top:"-150px" 
     }, { 
      duration: 0, 
      complete: function() { 
       parachute_drop(animation_duration); 
      } 
     }); 
} 

parachute_drop(90000); 

여기에 문제가 귀하의 호출 스택은 무한히 성장할 수 있도록 parachute_drop가 자신을 계속 전화 것입니다. 애니메이션이 여러 번 실행되는 것으로 예상되는 경우 문제가 될 수 있습니다 (일 동안 무인 상태). 나는 대부분의 브라우저에서 컷오프 포인트가 어디에 있는지 잘 모르겠습니다.

+0

OP를 실제로 읽지 않고도 사용자 지정 완화 기능이 필요하다고 생각합니다. – Hello71

+0

그게 내가 찾고있는 것입니다 - 감사합니다. 나는 그것 같이 그것을 형식화하는 방법의 확실하지 않았다!! 다시 한번 감사드립니다. – willdanceforfun

관련 문제