onEnterFrame 事件
onEnterFrame事件對于游戲開發(fā)者而言是非常有用的,它使得我們能夠快速、反復(fù)地按照預(yù)設(shè)幀頻(fps)運(yùn)行一段程序;叵朐贔lash5的時(shí)代,這(onEnterFrame實(shí)時(shí)監(jiān)控)是一種非常流行的技術(shù),用這樣的事件來控制機(jī)器游戲?qū)κ值倪壿,又或者我們可以在每一個子彈上設(shè)置這樣的事件來監(jiān)測子彈的碰撞。
實(shí)際上,我們并不推薦給過多的MoveClip添加這樣的事件,因?yàn)檫@樣做會導(dǎo)致“無頭緒碼(spaghetti code)”的出現(xiàn),并且容易導(dǎo)致程序效率明顯降低。
大多數(shù)情況下,用單獨(dú)一個onEnterFrame事件就可以解決問題了:用這一個主循環(huán)來執(zhí)行你所需要的操作。
另一個簡單的辦法是設(shè)置一個合適的幀頻:要知道幀頻越高,CPU資源就越緊張。在幀頻為25-35(fps)之間時(shí),onEnterFrame足以很好地執(zhí)行較復(fù)雜代碼,哪怕你的計(jì)算機(jī)配置較低。因此,在沒有特殊要求的場合,我們不推薦使用高于60(fps)的幀頻。
矢量圖與位圖
在處理圖形前,我們一定要做出正確的選擇。Flash能對矢量圖和位圖進(jìn)行完美的兼容,然而矢量圖和位圖在播放器中的表現(xiàn)實(shí)質(zhì)卻完全不同。在用到矢量圖的時(shí)候,我們要盡可能簡化它們的形狀,去除多余的端點(diǎn)。這樣做將大大降低播放器用于呈現(xiàn)矢量圖所要進(jìn)行的計(jì)算量。另一個重要方面在于線條的運(yùn)用,盡量減少和避免冗陳的線條結(jié)構(gòu),因?yàn)樗鼈儠苯佑绊懙絝lash的播放效率。
當(dāng)某個實(shí)例透明度小于100時(shí),也會對播放速率造成影響,所以如果你發(fā)現(xiàn)自己的Flash播放速率過慢,就去挑出這些透明的實(shí)例來吧!
那么,如果真的需要呈現(xiàn)比較復(fù)雜的場景時(shí),你就最好考慮使用位圖實(shí)現(xiàn)。雖然Flash在對位圖的渲染效率上并不是最優(yōu)越的(比如和Flash的“兄長”Director比起來),但豐富的視覺內(nèi)容呈現(xiàn)只能靠位圖(與位圖同復(fù)雜度的矢量圖形渲染速率非常低)了,這也是很多基于區(qū)塊的游戲中廣泛采用像素圖作為背景的原因。順便要提到的是,F(xiàn)lash雖然對GIF,JPG和PNG都有所支持,但是渲染速度上PNG還是占有絕對優(yōu)勢,所
以我們建議flash中的位圖都盡可能采用PNG格式。
影片剪輯(MovieClip)的可視性[下面將MovieClip簡稱為mc]
您可能會經(jīng)常碰到這樣一種情況:有大量不可見/屏幕外的mc等待出場(比如游戲中屏幕外的地圖、人物等等)。 要知道,播放器仍然要消耗一定的資源來處理這些不可見/屏幕外的mc,哪怕他們是單幀,非播放的狀態(tài)。
最好的解決辦法之一是給這些mc一個空白幀,當(dāng)他們不出現(xiàn)在屏幕上時(shí),你能用gotoAndStop()語句跳轉(zhuǎn)到這一幀,從而減少播放器對資源的需求。
請務(wù)必記住,這種情況下,簡單的設(shè)置可見度屬性為不可見( _visible = false )是無效的,播放器將繼續(xù)按照這些mc所停留或播放的幀的復(fù)雜度來分配資源。
數(shù)組
數(shù)組在各種需要記錄數(shù)據(jù)的應(yīng)用程序和游戲中都被廣泛的使用。
一個典型的例子就是基于區(qū)塊的Flash游戲,在這樣一類的游戲中,地圖有時(shí)被存放成形如arr[y][x]的二維數(shù)組。雖然這是一種很常見的方法,但是如果用一維數(shù)組的話,卻能提高程序的運(yùn)行效率。另一個重要的方法來提高數(shù)組效率是在數(shù)組遍歷的時(shí)候使用for in 循環(huán)來代替?zhèn)鹘y(tǒng)的 for 或者while循環(huán)語法。
例如:
一段代碼如下
for (var i in arr) { if (arr[i] > 50) { // 進(jìn)行某些操作 } }
它的執(zhí)行速度明顯高于這一段代碼:
for (var i=0; i < 10000; i++) { if (arr[i] > 50) { // 進(jìn)行某些操作 } }
前者的效率比后者提高了30%,這個數(shù)字在你的游戲要逐幀執(zhí)行這一段代碼的時(shí)候顯得更加寶貴!
出處:相關(guān)論壇
責(zé)任編輯:bluehearts
上一頁 FLASH程序優(yōu)化 [1] 下一頁 FLASH程序優(yōu)化 [3]
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|