createjs初学-关于Ticker
tick本來的意思是鐘表的滴答聲,在createjs中的Ticker當(dāng)然就是于時(shí)間相關(guān)的。
Ticker是一個(gè)靜態(tài)類,提供了好多靜態(tài)方法和屬性,不要去實(shí)例化它。
在API文檔中對Ticker的介紹是它是一個(gè)集中的間隔廣播,偵聽tick時(shí)間后再設(shè)定的時(shí)間間隔會(huì)調(diào)用偵聽函數(shù)。
但是我覺著在Beginning HTML5 Games with CreateJS這本書中的解釋更好。Ticker類為游戲開發(fā)提供了一個(gè)主要的定時(shí)類。它主要的目的就是把stage渲染的工作集中起來,也就是說定時(shí)調(diào)用stage.update()這個(gè)方法。Ticker設(shè)置的頻率也就是游戲的幀數(shù)了。
要注意一點(diǎn)就是在CPU使用率過高時(shí),Ticker可能會(huì)比設(shè)定的要慢。這個(gè)很容易理解。
Ticker的使用如下,Ticker靜態(tài)類偵聽tick事件,然后設(shè)置好相應(yīng)的函數(shù)就行
createjs.Ticker.addEventListener("tick", handleTick); function handleTick(event) {//todo }對于更新舞臺(tái)來說就是,可以先設(shè)置一個(gè)幀頻
createjs.Ticker.setFPS(30); createjs.Ticker.addEventListener("tick", handleTick); function handleTick(event) {stage.update(); }也可以這樣寫
createjs.Ticker.setFPS(30); createjs.Ticker.addEventListener("tick",stage);因?yàn)閍ddEventListener這個(gè)方法是這樣的
addEventListener (type listener [useCapture] )其中參數(shù)listener可以是一個(gè)方法,也可以是一個(gè)對象,這個(gè)對象里面有handleEvent這個(gè)方法,來出來偵聽事件。
而Stage類里面就有handleEvent這個(gè)方法,而且就是用來處理tick事件的,看Stage里面的源碼就知道
tick事件的event
function handleTick(event) {//todo }在偵聽函數(shù)中event的數(shù)據(jù)
1.event.paused 表示ticker是否處于暫停狀態(tài)
2.event.delta 在上一次tick事件之后到這次事件的時(shí)間間隔,以毫秒為單位。
3.event.time 在Ticker被初始化以后的時(shí)間總和,以毫秒為單位。
4.event.runTime 在Ticker被初始化以后沒有暫停的時(shí)間總和,以毫秒為單位。
Ticker類的屬性
1.interval 這個(gè)就是用來設(shè)置間隔的時(shí)間,以毫秒為單位。默認(rèn)為50。
在RAF模式下,這個(gè)參數(shù)就會(huì)被忽略。
2.framerate 這個(gè)參數(shù)用來直接設(shè)置fps,其實(shí)內(nèi)部實(shí)現(xiàn)就是設(shè)置interval
interval=1000/framerate。
3.maxDelta 指定tick事件中的delta最大值。文檔中推薦這個(gè)值為interval的兩倍。
4.paused 在ticker暫停時(shí),所有的偵聽器仍然會(huì)接受到tick事件,但是事件中的paused會(huì)是true;
5.timingMode指定tick的timing模式。一共有三種模式,TIMEOUT、RAF和RAF_SYNCHEN。
(1)TIMEOUT,這種模式下使用的就是setTimeOut這個(gè)方法實(shí)現(xiàn)的。是timingMode的默認(rèn)模式。
(2)RAF 在這個(gè)模式下使用requestAnimationFrame,完全忽略Ticker的幀頻。如果requestAnimationFrame API不支持的話就用TIMEOUT模式。
(3)RAF_SYNCHEN 在這個(gè)模式下使用requestAnimationFrame,但是試圖與ticker的幀頻同步。如果requestAnimationFrame API不支持的話就用TIMEOUT模式。
Ticker類的方法
1.getTime ([runTime=false] )
返回Ticker初始化以后的總時(shí)間,如果沒有初始化就返回-1。(初始化時(shí)在添加第一個(gè)偵聽時(shí)進(jìn)行的)。參數(shù)runTime表示返回的是否包含暫停時(shí)間,true的話只有tick運(yùn)行的時(shí)間,false的話是所有時(shí)間。
2.getEventTime (runTime ) 和getTime差不多,但是返回的是最近一次tick事件的時(shí)間。
3.getMeasuredFPS() 獲得當(dāng)前的實(shí)際幀頻。
4.getMeasuredTickTime 獲得平均一次tick所有的時(shí)間,大概就是在這一次tick所用的時(shí)間。
5.getTicks (pauseable) 獲得初始化后所有tick的次數(shù) 參數(shù)表明是否包含暫停的tick
6.reset() 停止Ticker并且移除所有的偵聽。
總結(jié)
以上是生活随笔為你收集整理的createjs初学-关于Ticker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 图片压缩,bitmap压
- 下一篇: 一学就会 | 3步搞定弥散海报