Jquery源码分析---FX分析
2010-09-14 13:39:01 来源:WEB开发网Step中第一部分是完成时的扫尾工作,恢复动画时改变的属性和运行complete的回调函数。第二部分就是计算this.now的值之后显示出来。目前jquery提供了两种算法来计算从时间间隔比率转换成位置上的比率。
easing: {
linear: function( p, n, firstNum, diff ) {
return firstNum + diff * p;
},
swing: function( p, n, firstNum, diff ) {
return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
}
},
这就是它的算法。对于linear的形式,Jquery采用了1:1的关系来计算的。
Stop
一个动画,有的时间可能会出现在没有运行完成就中断。Stop就是对这个进行操作的。
stop: function(clearQueue, gotoEnd){
var timers = jQuery.timers;
if (clearQueue) this.queue([]);// 清除
this.each(function(){
//倒序是为了能把在loop过程加入timers的当前元素的属性的动画step也给删除。
for ( var i = timers.length - 1; i >= 0; i-- )
if ( timers[i].elem == this ) {
if (gotoEnd) timers[i](true); // 强迫动画结束
timers.splice(i, 1);
}
});
// start the next in the queue if the last step wasn't forced
if (!gotoEnd) this.dequeue();
return this;
}
在stop中,我们可以看出step(force)中的参数的作用。这个强迫动画到最后一步,即动画结束进行扫尾工作。这里的jQuery.timers是公共的集合。在custom中的setInterval就是对它进行操作的。
文章来源:http://jljlpch.javaeye.com/category/37744
更多精彩
赞助商链接