我目前有一个提交按钮, - 点击后我会调用一次函数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();
}
答案 0 :(得分:2)
猜测,preloadMessageFadeOut()实际上调用了函数然后将onComplete设置为返回值 - 什么都没有。删除括号会将onComplete设置为函数对象。对于preloadNextMessage()调用也一样。
答案 1 :(得分: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});