2013-06-16 4 views
0

어떻게해야합니까? 먼저 코드 ...콜백시 변수 값 반전

function flutter() { 
    var random = Math.floor(Math.random()*5); 
    var $obj = $('.bird'); 
    $obj.animate({ top :'-=' + random + 'px' }, 20, flutter); 
    } 
</script> 

위의 코드에서 콜백이 실행될 때 random 값을 반대로하고 싶습니다. 내 목표는 클래스 새를 위아래로 움직여서 펄럭 이는 효과가 발생하는지 확인하려고하는 것입니다.

당신은이 같은 일부 폐쇄 사용할 수 있습니다
+0

'flutter'의 첫 번째 호출은 어떻게 생겼습니까? – Cherniv

+0

그냥 flutter(); @Cherniv, 내 목표는 다음과 같습니다. 첫째로 함수를 flutter()로 실행하고 다음 실행 또는 콜백에서 임의의 숫자가 생성되는 flutter 함수의 첫 번째 줄을 실행하지 않고 그 번호를 반대로 만듭니다. 전에 사용했고 매번 뒤집습니다. 즉, 함수의 첫 번째 행을 처음으로 실행하면됩니다. 나는 이것을 올바르게 생각하고 있는가? 그것을하는 더 좋은 방법이 있습니까? 나는 새로운 JS 그래서 나를 참아주십시오. 또한 위의 코드를 약간 수정했습니다. Flutter에는 인수가 없습니다. –

+0

나는 본다. 내 코드를 업데이트했습니다.보세요 – Cherniv

답변

2

:

$obj.animate({ top :'-=' + random + 'px' }, 20, function(){ 
    flutter(random*-1); 
}); 

그리고 이것은 전체 코드입니다 :

function flutter(offset) { 
    var random = (isNaN(offset)) ? Math.floor(Math.random()*5) : (offset) ; 
    var $obj = $('.bird'); 
    $obj.animate({ top :'-=' + random + 'px' }, 20, function(){ 
     flutter(random*-1); 
    }); 
} 

그리고 첫 번째 통화는 간단합니다 : flutter();

+0

감사합니다 Cherniv! 왜 그렇게 똑똑해? ??? –

+0

@ Jack_of_All_Trades 클라이언트 측 개발 및 맥주에서 단지 약 7 년 경력;) – Cherniv

2

위의 난 그냥 불통 플러터 보다 효율적이고 편리하게 사용할 수 있습니다.

function flutter(distance, target) { 
    // you can call flutter without argument. And no repetitive element finding is needed 
    var random = distance || Math.floor(Math.random()*5); 
    var $obj = target || $('.bird'); 
    $obj.animate({ top :'-=' + random + 'px' }, 20, function(){ 
     flutter(-random, $obj); 
    }); 
    }