Angenommen, dies ist erweiterbar auf eine beliebige Anzahl von Kreisen, würde ich SetTimeout und eine Schleife, ähnlich der, die Sie verwenden, verwenden.
Damit die Animation aus einer Schleife funktioniert, müssen Sie eine "Schließung" verwenden, damit die Animation bei späterer Ausführung weiß, auf welchen Kreis sie verweist (andernfalls könnte sie nur das letzte Objekt animieren)).
Die Verwendung einer Funktionsform von (function() {})() (genannt unmittelbarer Modus) stellt sicher, dass Variablen innerhalb des Funktionsumfangs erfasst werden, sodass die Variablen später korrekt sind.
for(var i=1; i<10; i++) {
(function() { // start closure with functional scope
var circle = paper.circle(width*0.4, height*0.2, 10*i);
setTimeout(function() { circle.animate({transform: "T0,100"}, 2000); }, (i-1) * 2000 )
})();
}
jsfiddle
Wenn Sie zuerst alle Kreise nicht wollen, müssen Sie noch einen Verschluss, den Index erfassen i (die wir c zuweisen wird klar in der Funktion zu machen).
zB
for(var i=1; i<10; i++) {
(function() { // start functional scope
var c = i; // c is now tied to this scope
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate({transform: "T0,100"}, 2000);
}, (c-1) * 2000 )
})();
}
jsfiddle
Ich bin nicht sicher, ob eine Notwendigkeit gibt es ein Animationsobjekt hier zu erstellen, aber wenn man wollte, die Docs sind here
gleiche Beispiel, aber ein Raphael verwenden. Animation.
var animation = Raphael.animation({transform: "T0,100"}, 2000)
for(var i=1; i<10; i++) {
(function() {
var c = i;
setTimeout(function() {
var circle = paper.circle(width*0.4, height*0.2, 10*c);
circle.animate(animation);
}, (c-1) * 2000 )
})();
}
jsfiddle
Wollen Sie die Animationen zu beliebigen Zeiten beginnen? (In diesem Fall würde ich setTimeout verwenden und eine Funktion aufrufen, um es zu animieren) Oder nachdem die vorherige Animation beendet wurde (in diesem Fall würde ich den Callback-Parameter in der Animation verwenden). – Ian
Ich möchte, dass zuerst der innerste Kreis erscheint. Nach ihm der zweite Kreis (z. B. nach 1 Sekunde). Dann der dritte Kreis. – beub
Wenn ich animiere: Wie erstelle ich ein Animationsobjekt (wo finde ich eine Dokumentation)? – beub