日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flash中的计时器

發(fā)布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flash中的计时器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在AS3開發(fā)中,計時器應該是最常見的組件了,關于各種計時方法也是層出不窮,一般來說,各種方法都會滿足我們的需要,但是我們還是會遇到一個讓人頭痛的問題,那就是精度。

由于Flash是解釋運行,限于FP的虛擬機有諸多限制,所以不要指望能和C++那樣擁有可以到達毫秒級的高精度計時,甚至連微秒級別的計時也不容樂觀,我們今天就來探討一下常用的計時方法和他們的差別。

1 Event.ENTERFRAME事件

????????這個應該是最常見的了,幾乎很多計時都用這個事件。它表示幀頻,也就是說,每秒鐘播放多少個幀,最新的CS5版本默認是24幀,早期的版本默認是12幀,這個是由于為了彌補和提高早期動畫不流暢的問題而提高了幀率,事實也證明,人眼對于每秒30幀以上的畫面切換就不會再感到閃爍,對于Flash,24幀就足夠了

????????Event.ENTERFRAME事件雖然好用,但是在FP10.1版本以后,Adobe為了解決Flash內存占用的問題,做了一個優(yōu)化:那就是如果當前的Flash,包括FP中本地和WEB頁面上的動畫,沒有處于焦點狀態(tài),也就是說有其他窗口遮蓋了Flash,那么它會自動降頻,降為2幀/秒來運行,這樣的話計時就大大不準了,這種方法不太實用時間類的計時。

2 Timer

????????Timer真是讓人既愛又恨,不可否認的是,Timer的確是一個非常方便的計時器組件,但是他的精度實在是太低了,1個小時中間我見過的誤差能有幾分鐘,我們也可以測試一下Timer的精度:

view source print? 01.var?TestTime:Timer = new?Timer(1000); 02.TestTime.addEventListener(TimerEvent.TIMER,OnTimer); 03.TestTime.start(); 04.? 05.? 06.private?function?OnTimer(e:TimerEvent){ 07.var?tick = getTimer(); 08.trace(tick); 09.}

????????getTimer()是獲得Flash運行到現(xiàn)在的毫秒數(shù),運行上面的代碼我們會發(fā)現(xiàn),每次trace的結果都忽大忽小,按道理說應該是按照一定的固定數(shù)字增加才對,但是這個數(shù)字并不固定,雖然trace會占用一部分時間,但是總的來說,Timer的精度還是不容樂觀。

3 setInterval()方法

????????這個是按照指定的毫秒數(shù)去不斷運行一個方法,但是和Timer差不多,而且setInterval()本身的機制需要Flash不斷的去調用,因此也不是很理想。

4 getTimer()方法

????????有人說用getTimer()來計時,理由是它獲得的是系統(tǒng)所經過的毫秒數(shù),不錯,但是你怎么來調用這個方法呢?還是要在Timer或者ENTERFRAME里調用,俗話說上梁不正下梁歪,就算getTimer再精確,由于調用它的方法不精確,所以也沒有多大意思

5 Tween

????????Tween也可以計時,這個一般人好像并不會用到,但是用Tween來做計時有個明顯的好處就是,他不會受WEB頁面的影響,因為有不少人反映在WEB里播放Flash有的機器快有的慢,如果用Tween來計時就沒有這個問題,具體原因我也說不清,但是我的確用這個方法解決了曾經一個Flash在不同瀏覽器計時不準確的問題。

以上都是常用的計時方法,只能根據需要取舍,如果大家有更好更精確的計時方法也歡迎提出,需要提示一點的是:Timer用的越多效率越低,誤差也越大,不知道FP10.2對于這些問題有沒有實質性的改進。

總結

以上是生活随笔為你收集整理的Flash中的计时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。