[英]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.