簡體   English   中英

oncomplete調用后的無限循環功能-為什么?

[英]Infinite loop function after oncomplete call - why?

我當前有一個“提交”按鈕,-單擊后,我一次調用函數showPreloadIcon() 從這里,我基本上展示了一個預加載疊加層,循環播放了幾條消息。

我的問題是,從以下位置調用preloadText()時,似乎會運行無限調用:

function preloadNextMessage() {
    indexMessage++;

    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();
}

猜測一下,preloadMessageFadeOut()實際上然后調用該函數,然后在那里將onComplete設置為返回值-什么都沒有。 刪除括號將改為將onComplete設置為功能對象。 與preloadNextMessage()調用相同。

您需要傳遞函數引用作為回調(即,傳遞回調函數時不要使用括號)。 通過在回調中包含括號,您可以在延遲之前執行括號,從而導致無限循環:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM