Javascript动画效果3

前面我们已经介绍了速度动画、透明度动画、多物体运动和任意值变化,并且我们在效果(二)中介绍到我们封装了一个简单的插件雏形,接下来我们对前面的动画效果进行进一步扩充,尽量将我们的框架做到更实用。在这里我们还需要了解两个运动,一个是链式运动,一个是同时运动。它们间的区别分别是:链式运动是指运动一个接着一个一个运动完成马上进行下一个运动);而同时运动是指所有的运动同时进行。在这里,我们该如何实现呢?

1、链式运动

  前面的效果中,我们已经能对任意值进行相应的变化,我们该如何在一个动画后添加一个动画呢?

  思路:我们能不能在参数中传入一个函数,当一个效果完成后马上执行后面的函数效果),该函数可以是想要的动画效果

  实现:在function startMove(obj,attr,iTarget)中在传入一个参数fn,代表一个函数。这时我们还需要修改的有在定时器的后面增加一个判断if(fn){fn(); },当存在fn函数时执行fn函数,当不存在fn函数时清除定时器。这样我们的window.onload函数也应该发生相应变化,代码如下:

rush:js;"> window.onload = function() { var Li = document.getElementById('li1'); Li.onmouSEOver = function() { startMove(Li,'width',400,function() { startMove(Li,'height',200,function() { startMove(Li,'opacity',100); }); }); }; Li.onmouSEOut = function() { startMove(Li,30,100,200); }); }); }; };

所以我们得到链式运动的如下代码

rush:xhtml;"> <Meta charset="UTF-8"> 链式运动