这一块没怎么看懂,这样传参是怎么形成动画效果的,这个人讲的好快啊

来源:6-2 封装形变类(2)

Ting111

2020-12-15 21:04:59

http://img.mukewang.com/climg/5fd8b3fb0933ebd210720942.jpg

写回答

1回答

好帮手慕夭夭

2020-12-16

同学你好,老师拿第一个动画“位移”举例子(其他动画同理),同学可以下载源码,结合代码理解一下。如下:

1、调用动画translate方法,传入一个实参:


http://img.mukewang.com/climg/5fd967410973156504580064.jpg

2、如下图,执行translate方法,参数value就接收了实参,即value='200px, 200px'。而上面调用translate方法时,没有传递第二个参数,所以time为undefined。translate中调用了_add方法,并传入参数,如下:

http://img.mukewang.com/climg/5fd9689c0934a41704750101.jpg

3、执行_add方法,接收参数。这些参数通过push方法添加到了数组_queue中。如下图:

http://img.mukewang.com/climg/5fd9687209172b5c05020121.jpg

注意,前面说time的值为undefined,所以当参数值为undefined时,默认值会生效。

http://img.mukewang.com/climg/5fd96adf09f9506505290079.jpg

所以数组_queue中保存的动画是如下形式:

http://img.mukewang.com/climg/5fd96b0e095e762d05490062.jpg

4、以上就是translate方法之后,执行的所有代码,最终在数组中添加了动画。然后后面调用了done方法,所以执行完translate方法之后,继续执行done方法。

http://img.mukewang.com/climg/5fd96bd0099b296204540355.jpg

5、done方法中是调用了_start方法,所以执行_start方法。

http://img.mukewang.com/climg/5fd96cbc09b5c5e800000000.jpg

6、_start方法中就是给元素添加动画效果了,如下:

前面讲了,在_add方法中,给数组_queue添加了动画,所以这里判断,如果_queue没有动画,就直接返回,后面的不执行了。如果有动画,那么取出第一个,通过this.el.style.transition和this.el.style.transform给元素添加了过渡和动画效果。

http://img.mukewang.com/climg/5fd96d1109f358d406920308.jpg

当第一个动画添加完之后,就会再次调用_start,重复上面的操作了哦。

http://img.mukewang.com/climg/5fd96d8e09a99a6a03270105.jpg

7、另外,如果同学觉得视频讲的太快,可以调整倍速。或者倒回去多看几遍哦。或者下载源码,结合源码去理解。在学习的过程中,建议多练习,这样可以帮助自己更快的熟悉代码。

祝学习愉快~

0

0 学习 · 10739 问题

查看课程