这些数值其实是ui设计师制作图片时定的每一帧图片的位置,可以在ps中去量取,是ui设计师给你的。不过网上也有些工具可以读取雪碧图的位置,你可以百度一下
首先,要理解JS是单线程的。也就是说,在一次Event Loop中,会同步执行完所有JS代码。
同步任务是在一次Event Loop中执行的JS代码,去完成相应的“任务”。
异步任务不是一次Event Loop可以做完的,通常JS有几种方式实现异步,如异步ajax请求,setTimeout,requestAnimationFrame等。
动画库这个案例中,我们引入了“任务链”这个概念,把一些同步异步的“任务”添加到任务链上。所有通过timeline创建的动画都是异步任务,因为它底层用到了requestAnimationFrame。
动画暂停不是一个任务,它是调用了timeline的一个接口方法,达到暂停动画执行的目的。
其实这个帧动画库我在百度工作的时候,从一个实际项目需求里抽象出来的。因为我们有大量帧动画的需求,但又不想为每个需求去编写那些重复的代码,所以就想抽象一个通用的帧动画库,方便开发。
当时设计接口的时候一个很重要的原则,就是怎么让人用起来爽,就定了链式调用这种方式。后来也发现这种设计和promise的一些设计思想不谋而合。
一开始设计的时候就考虑到大部分接口了,比如loadImage,changePosition,changeSrc,then,repeat,repeatForever,enterFrame,start,dispose。
随着项目的一些需求变化,比如需要2组帧动画,帧动画间需要有等待时间,就设计了wait接口。后来又需要能外部操作帧动画的暂停和继续播放,又设计了pause和restart接口。
good