定時器:
周期性定時器
一次性定時器
1. 周期性定時器: 讓程序每隔一段時間間隔,反復執行一項任務
何時使用: 只要連續,有規律的持續播放的動畫
如何使用: 3件事:
1. ***任務函數: 定時器每次執行的任務
function task(){...}
任務函數通常要自己考慮:*何時停止*定時器的臨界值
2. 將任務函數放入定時器,定時執行:
timer=setInterval(task,interval)
其中: interval 是間隔的毫秒數
timer往往是一個全局變量: 用來保存當前定時器的序號
序號是內存中唯一標識一項任務的編號
原理:首先將task函數對象和interval時間間隔記錄在定時器對象中,再返回當前任務的序號
然后,定時器會按照指定時間間隔,將task函數定時加入回調隊列(callback queue)中。
只有ECS中沒有正在執行的函數時,才將callbackqueue中的函數加入ECS中執行
3. 停止定時器:
clearInterval(timer);
2. 一次性定時器: 先等待一段時間,再自動執行一次任務
何時使用: 1. 如果任務只執行一次時
2. 如果動畫的啟動,停止,變化規律都很隨意
如何使用: 3件事:
1. 任務函數:
function task(){...}
任務函數的結尾要考慮: *何時啟動下一次*
2. 啟動一次性定時器
timer=setTimeout(task,wait)
其中: wait是等待的毫秒數
3. 停止一次性定時器: 其實是停止等待,不再執行任務
clearTimeout(timer);
timer=null;
其實: 一次性定時器連續啟動,也可實現周期性的效果
區別: 任務函數的結尾:
周期性定時器任務: 判斷何時停止定時器
一次性定時器任務: 判斷何時啟動定時器