Javascript 拉法ë;l、 js animation resume()在集合中失败
我有一段代码()Javascript 拉法ë;l、 js animation resume()在集合中失败,javascript,html,animation,raphael,resume,Javascript,Html,Animation,Raphael,Resume,我有一段代码() var纸张=新拉斐尔('holder',400,100); var set=paper.set(); 对于(变量i=0;i
var纸张=新拉斐尔('holder',400,100);
var set=paper.set();
对于(变量i=0;i<10;i++){
变量圆=纸张圆((i*30)+30,20,5);
circle.attr({fill:'#ff0'});
动画(拉斐尔动画({transform:'s2,2'},2000)。重复('Infinity');
推(圆);
}
set.hover(函数(){
set.pause();
},函数(){
set.resume();//在Safari/Firefox上,悬停一段时间后,我收到了此错误消息(使用未压缩的源代码):
设置totalOrigin
的唯一位置是runAnimation
功能:
line 3072: function runAnimation(anim, element, percent, status, totalOrigin, times) {
您的代码首先调用elproto.pause()
(第3352行),然后调用elproto.resume()
(第3361行)。pause()
将pause
属性设置为true,resume()
删除此属性。但是resume
也会调用状态()
方法在删除暂停
标志后立即执行:
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
函数,如果它有值
参数:
runAnimation(anim, this, -1, mmin(value, 1) );
totalOrigin should be passed here! ^^^
不幸的是,它没有为totalOrigin
传递任何信息,这就是导致该错误的原因
我尝试根据第3312行添加一个totalOrigin
参数:
runAnimation(anim, this, -1, mmin(value, 1), this.attr());
虽然它似乎起作用,但它却有问题
作为第二次尝试,我注释掉了整行内容:
// runAnimation(anim, this, -1, mmin(value, 1));
结果:它可以工作,但计时错误,可能动画开始时间应该在某个地方更新
https://raw.github.com/gist/3067995/1e82de48eeacf98697b572efdc74c11a9b1d9d03/gistfile1.js在elproto.status
方法中,您需要替换(Raphael 2.1.4中的第5127-5128行)
与
for(var i=0;i
我链接了未压缩的Räphël.js进行调试:悬停后,它恢复播放,但在raphael.js再次循环之前死亡。js:line#2946 withe.totalOrigin未定义
很棒;非常好的分析!非常感谢!这是一个很好的开始,如果我不能让它工作,我将提交一份错误报告。Exac泰利,这就是为什么它需要进一步的研究,请随意为赏金做调查:)
runAnimation(anim, this, -1, mmin(value, 1), this.attr());
// runAnimation(anim, this, -1, mmin(value, 1));
runAnimation(anim, this, -1, mmin(value, 1));
return this;
for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {
e = animationElements[i];
runAnimation(anim, this, -1, mmin(value, 1), e.totalOrigin, e.repeat);
return this;
}