Boss指示器教程二自定义计时器

精华修改于06/13243 浏览案例分享
这期继续讲解BOSS指示器。
上一期我们讲到指示器的进度用到了自定义计时器。
自定义计时器是在官方计时器基础封装了一层。
TapTap
TapTap
自定义计时器方法里有6个参数
总时间:整个计时器的持续时间
我的间隔:每隔多少时间执行一次周期函数
周期执行函数: 每个周期执行的函数
结束函数:计时器结束时候执行的函数。
是否立即运行一次:周期函数是否立即执行一次。
计时器集合: 用于保存计时器,方便统一管理计时器。
这边其实还可以加一个,开始函数参数。 如果你有在计时器开始的执行一次函数的需求。
局部变量有三个
剩余时间:用于计算当前计时器的剩余时间,来判断是否需要触发结束函数
累计时间:用于计算当前的累计时间是否达到一个周期的时间,当累计时间大等于周期时间的时间,执行一次周期函数,并将累计时间归零,开始下一周期时间的累计。
当前计时器:用于保存当前计时器
动作开始:
先判断是否需要立即执行一次周期函数。
创建一个每0.1秒执行一次的计时器。并赋予当前计时器。
在回调函数里累计时间每次递增0.1秒(0.1是根据你创建计时器的间隔时长来决定的,当然你可以把这个间隔时长也设置成参数,这里有个需要的注意的点, 为什么不把我的间隔参数,直接赋予计时器间隔。而且用0.1秒作为计时器间隔。举个例子,假设我的计时器总时长是6秒,我的间隔时长是4秒,计时器间隔也是4秒,那么就会出现问题,计时器会执行两个间隔,实际是在第8秒的时候才执行结束函数,和我们设置的总时长6秒匹配不上。所以才使用0.1进行递增,这样整个计时器会更准确。当然不考虑性能的情况下,更低也可以)
剩余时间每次递减0.1秒,当剩余时间小等于零的时候且结束函数不等于空,执行结束函数,并移除当前计时器,返回空不继续执行下面语句。
剩余时间如果不小等于零,则判断累计时间是否大等于我的间隔,大于则执行周期执行函数并归零累计时间。开始下一周期时间的累计
最后就是计时器集合里添加当前计时器。
这样我们的自定义计时器就完成了, 大家可以根据自己需求再进行修改或者优化。
5
1