Safari / Firefoxで、ホバーアウトしてしばらくすると、次のエラーメッセージが表示されます(https://raw.github.com/DmitryBaranovskiy/raphael/master/raphael.jsの非圧縮ソースを使用)。
`raphael.js`, line 2946: `e.totalOrigin is undefined`
totalOrigin
が設定される唯一の場所はrunAnimation
関数です:
line 3072: function runAnimation(anim, element, percent, status, totalOrigin, times) {
コードは最初に呼び出しelproto.pause()
(3352行目)、次にelproto.resume()
(3361行目)呼び出します。プロパティをtrueにpause()
設定し、このプロパティを削除します。ただし、フラグを削除した直後にメソッドを呼び出します。paused
resume()
resume
status()
paused
var e = animationElements[i];
if (eve("raphael.anim.resume." + this.id, this, e.anim) !== false) {
delete e.paused;
this.status(e.anim, e.status);
}
奇妙な進行中のelproto.status
メソッド(3323行目)は、とによってのみ呼び出されelproto.setTime()
ますelproto.resume()
。この関数は複雑な戻り値を作成しますが、アクティブなコードはその戻り値を使用せず、2980行目から始まるコメント化された行のみを使用します。
この関数は、パラメーターrunAnimation
がある場合、関数も呼び出します。value
runAnimation(anim, this, -1, mmin(value, 1) );
totalOrigin should be passed here! ^^^
残念ながら、それは何も渡しませんtotalOrigin
、そしてこれがバグの原因です。
totalOrigin
3312行目に基づいてパラメータを追加してみました。
runAnimation(anim, this, -1, mmin(value, 1), this.attr());
動作しているように見えますが、バグがあります。
2番目の試みとして、私は行全体をコメントアウトしました。
// runAnimation(anim, this, -1, mmin(value, 1));
結果:動作しますが、タイミングが間違っています。おそらくアニメーションの開始時刻をどこかで更新する必要があります。
http://jsfiddle.net/7nGcR/26/
https://raw.github.com/gist/3067995/1e82de48eeacf98697b572efdc74c11a9b1d9d03/gistfile1.js