frame rate issue of flash player 8,9
tinic 寫了一篇關於 frame rate 的文章
裏面提到了過去幾年來眾多玩家們曾嚐試在 frame rate 上動的各種手腳。
在以往,一個普遍的觀念是認為:拉高 frame rate, 例如從預設的 12fps 到 31fps,可以有效的增加 player的運作效率,進而導致更流暢的動畫與反應。
這點在 flex 2 (flash player 9)裏也仍然成立,flex 2 預設的 fps 是 24,但一般我都至少設成41,結果確實也是反應速度更快。
這裏面詳細的原因在 tinic 的文章裏有說明,但簡單的精華就是:
fps越高,代表 player redraw 畫面的 interval越短,而在 flex framework裏,許多事情是透過每次畫面的 redraw 來反映出來,例如 invalidateProperties() 就是在觸發後等待下一次的 frame redraw 才會顯示出來,因此拉高 fps 就代表者 player 會在更短的時間內將設定畫出來。
但 tinic 也在文章裏提到,flash player 實際上並沒有一個共通的 global frame rate,也就是說user雖然可以指定不同的 fps,但player在運作上因為種種因素可不見得(或有能力)完全去遵守。
tinic 的說法如下:
What does this mean? Well, the frame rate you select does not really mean too much and you should not depend on it in a way to be accurate to the millisecond.
總的來說來,拉高fps 時要考慮的事:
1、不同平台與不同版本的 player 會依據不同的 timer來做為計時與redraw的依據,光是在 windows 上,不同browser 內的 flash player plugin 取得 timer的方式就不同,而 stand alone 的 player 又更是另一回事。因此任何timer的設定最終都會越來越不準。
2、越高的 fps 代表消耗的cpu resource也更高,如果畫面上同時有許多swf,或user好死不死開了一狗票的 tab裏面每個都有一堆swf,那browser吃掉的資料恐怕就會很驚人,這也是 firefox 目前最痛的地方(到底 memory leak什麼時後要修好啊?)
不過目前 fp9 + 41fps 運作的很愉快,所以在沒炸掉前就先繼續吧…


Trackback this post | Subscribe to the comments via RSS Feed