2016-08-05 7 views
0

In dem folgenden Code versuche ich drei Funktionen zu loopen, die nur feuern, sobald die vorherige Funktion abgeschlossen ist, wobei die letzte Funktion dann die erste aufruft, um den Prozess erneut zu starten. Die Verwendung von setInterval/setTimout sind keine guten Antworten dafür, weil RequestAnimationFrame ihren Platz als sauberere Methode einnimmt, aber ich weiß nicht, wie man RequestAnimationFrame auf diesen Code anwendet. Auch die Frage, warum die dritte Funktion nicht die erste aufruft, würde auch mit diesen beiden Methoden nicht beantwortet werden.JS AnimationEnd Loop, möchte kontinuierlich Schleife ohne Verwendung; setInterval/setTimout

<body onload="runOne()"> 

function runOne(){ 
var x = document.getElementById("rightBox"); 
document.getElementById("rightBox").style.animation = "scrollTextTwo 10s"; 
x.addEventListener("animationend",runTwo); 
}; 


function runTwo(){ 
var x = document.getElementById("rightBoxTwo"); 
document.getElementById("rightBoxTwo").style.animation = "scrollTextTwo 10s"; 
x.addEventListener("animationend",runThree); 
}; 


function runThree(){ 
var x = document.getElementById("rightBoxThree"); 
document.getElementById("rightBoxThree").style.animation = 
"scrollTextTwo 10s"; 
x.addEventListener("animationend",runOne); 
}; 

Der obige Code funktioniert nur einmal, wird es alle drei Funktionen spielen/animieren, aber dann stoppt nach „runThree()“ ist abgeschlossen. Ich würde gerne wissen, wie "runThree()" kann "runOne()" aufrufen, sobald drei ausgeführt wird mit seiner Animation abgeschlossen?

Antwort

2

Also, ich denke, Sie haben mehrere Möglichkeiten: Was könnte funktionieren ist, dass Sie die Animation von rightBox in Funktion runTwo mit animation: none zurücksetzen. Wenn Sie scrollTextTwo 10s zurück zu rightBox zuweisen, sollte es erneut starten. Äquivalent für die anderen.

Siehe folgende Codepen, wo ich eine endlose CSS-Animation mit JavaScript implementiert.

es alternativ auch möglich, sie ohne JavaScript zu tun: Sie können animation-delay, infinite wiederholen und einige andere Tricks wirklich komplexe Animationen Zeitrahmen zu erstellen, nehmen Sie vielleicht auch einen Blick auf die folgenden question.

+0

Wie würde "Animation: keine" im Code aussehen? Ich bin nicht vertraut mit dem Zurücksetzen der Animation. – Ghoyos

+0

Einfach so: '' document.getElementById ("rightBox"). Style.animation = "keine"; '' Ich habe meinem Beitrag auch ein funktionierendes Beispiel in Codepen hinzugefügt. schau es dir an, um zu sehen, wie es genau funktioniert :) – ScientiaEtVeritas

+0

Danke dir so sehr! werde jetzt in deinen Code-Stift tauchen !! – Ghoyos

Verwandte Themen