2016-09-29 3 views
1

Wie kann ich die Ausführung einer Animation verzögern, die aus 30 Sequenzen mit einem Intervall von 50 ms besteht?Verwendung von setTimeout und setInterval möglich?

$(function() { 
    setInterval("anim1()", 50); 
    setTimeout("anim1()", 3000); /* doesn't work */ 
}); 



function anim1() { 
    var oCurBack = $('#fullback div.current'); 
    var oNxtBack = oCurBack.next(); 
    if (oNxtBack.length === 0) 
     return; 

    oNxtBack.addClass('current'); 
    oCurBack.removeClass('current').addClass('previous'); 
} 
+4

Es ist nicht klar, was Sie hier geschehen haben wollen. –

+0

Klare wie Glas zu mir;) – mplungjan

+0

Separat und nur tangential, schauen Sie in 'requestAnimationFrame' –

Antwort

3

Annahme: Sie wollen die Intervall-Animation nach 3 Sekunden zum Starten

  • das Intervall in eine Funktion setzen Sie
  • verzögern ich die anim1 statt "anim1()" verwenden, um die Zeichenfolge, da die Verwendung einer versteckt Eval
  • Sie möchten wahrscheinlich die Animation stoppen, wo Sie jetzt zurückkommen
var tId; // have global id to store the interval 
$(function() { 
    tId = setTimeout(function() { setInterval(anim1, 50) }, 3000); 
}) 

function anim1() { 
    var oCurBack = $('#fullback div.current'); 
    var oNxtBack = oCurBack.next(); 
    if (oNxtBack.length === 0) { 
    clearInterval(tId); // clear the interval now we are done 
    return; 
    } 
    oNxtBack.addClass('current'); 
    oCurBack.removeClass('current').addClass('previous'); 
} 

Zum Wiederholen der Animation alle 4 Sekunden versuchen

var tId1, tId2 
$(function() { 
    tId1 = setInterval(function() { 
    var $divs = $('#fullback div.current'); 
    $divs.removeClass(current); // remove all current 
    $divs.eq(0).removeClass('previous').addClass('current'); // add on the first 
    tId2 = setInterval(anim1, 50); 
    }, 3000); 
}); 


function anim1() { 
    var oCurBack = $('#fullback div.current'); 
    var oNxtBack = oCurBack.next(); 
    if (oNxtBack.length === 0) { 
    clearInterval(tId2); // clear the interval now we are done 
    return; 
    } 
    oNxtBack.addClass('current'); 
    oCurBack.removeClass('current').addClass('previous'); 
} 
+0

Warum der Downvote? – mplungjan

+2

Sieht aus wie relevant anwser ... 'Wie kann ich die Ausführung verzögern? ... –

+3

Ich hätte es sicherlich nicht runtergeregelt. Ich denke, die Frage ist momentan zu unklar, aber das bedeutet nicht, dass diese Antwort notwendigerweise falsch ist. –

Verwandte Themen