2013-09-06 2 views
1

현재 제출 버튼이 있습니다. 클릭하면 기능 showPreloadIcon()을 한 번 호출합니다. 여기에서 나는 기본적으로 두 개의 메시지를 통해 반복되는 미리로드 오버레이를 보여줍니다. 나는 그것을 주석 경우불완전한 호출 후 무한 루프 기능 - 왜?

function preloadNextMessage() { 
    indexMessage++; 

    preloadText(); 
} 

, 내가 문제를 참조 해달라고 :

내 문제는 preloadText()가 호출 될 때 무한 호출을 실행하는 것 같다 것입니다. 그러나 불려질 때 preloadMessageFadeOut() 무한 루프에 넣어 것 - 어떤 아이디어?

전체 코드 : 추측에서

var createUserPreloadMessages = new Array("Creating your user", "Message 2", "Message 3", "Message 4"); 

var indexMessage = 0; 

function showPreloadIcon() { 

    TweenMax.to($("#preloadIcon"), 0.5, {autoAlpha: 1}); 

    preloadText(); 
} 


function preloadText() { 
    $("#preloadText").css({ 
      visibility: "hidden" 
    }); 

    $("#preloadText").html(createUserPreloadMessages[indexMessage]); 

    TweenMax.to($("#preloadText"), 0.5, {delay: 1, autoAlpha: 1, onComplete:preloadMessageFadeOut()}); 
} 

function preloadMessageFadeOut() { 

    TweenMax.to($("#preloadText"), 0.5, {top: "10px", delay: 3, autoAlpha: 0, onComplete:preloadNextMessage()}); 
} 

function preloadNextMessage() { 
    indexMessage++; 

    preloadText(); 
} 

답변

1

콜백으로 함수 참조를 전달해야합니다 (즉, 콜백 함수를 전달할 때 괄호를 사용하지 않음). 당신의 콜백에 괄호를 포함하면 무한 루프의 원인이되는 지연 전을 실행됩니다

TweenMax.to($("#preloadText"), 0.5, {delay: 1, autoAlpha: 1, onComplete:preloadMessageFadeOut}); 

TweenMax.to($("#preloadText"), 0.5, {top: "10px", delay: 3, autoAlpha: 0, onComplete:preloadNextMessage}); 
+0

잡았다을 - 나는 화가 피곤해야합니다 -이 완전히 sence합니다 - 지금 모든 좋은 - 감사 제비! – user1231561

2

는 preloadMessageFadeOut()는 실제로 다음 거기 함수를 호출하지 않고 반환 값에 onComplete를 설정합니다 - 아무것도. 괄호를 제거하면 function 객체에 onComplete가 대신 설정됩니다. preloadNextMessage() 호출과 동일합니다.