これは興味深いです。オプションの callback パラメータを使用して、この方法で巧妙に更新できると思いましたが、これは機能しません。
anim = Raphael.animation({transform: "r45"}, 500, function(e) { anim.del = 0; }).delay(1000);
ソースをちらりと見ると、アニメーションのパラメーターは反復ごとに更新されていないように見えます (私は思います)。
これは機能しますが、 setTimeout メソッドと機能的にどのように異なるかはわかりません。
var paper = Raphael(0,0,500,500),
square = paper.rect(50,50,50,50).attr("fill", "#009900"),
//anim = Raphael.animation({transform: "r45"}, 500, function(e) { console.log(anim); anim.del = 0; }).delay(1000);
anim = Raphael.animation({opacity: 0}, 1000, function() { this.attr("opacity", 1); /* this callback is just to reset the effect for my dummy animation */ }),
wait = Raphael.animation({opacity: 1}, 500, function () { this.animate(anim.repeat("Infinity")); /* this callback triggers the actual animation after a 500ms placebo animation */ });
square.animate(wait);
jsフィドル
ご覧のとおり、これは 500 ミリ秒のアニメーションを視覚効果なしで 1 回だけ実行し、コールバックで実際のアニメーションを呼び出します。