2004/10/2

TileBased中MC顯示/隱藏小技巧

這裏要討論關於TileBased的MovieClip 顯示/隱藏的小技巧,可用於改善遊戲執行效能。
一般是用_visible來控制顯隱即可,但Tile元素一多時,光_visible還是不夠的。

在製作TileBased、Platform之類的遊戲時,當遊戲場景比可視範圍大時,通常需要將可視範圍以外的MC加以隱藏,而將可視範圍內的MC顯示出來,隨著場景的捲動,不斷刷新畫面圖像
(若沒有這樣重覆刷新,也就失去TileBased的用意了)

上圖即是一個簡單的顯示/隱藏示意圖,當人物向右下方移動,則地圖是往左上方捲動,因此最左上的列Tile需隱藏起來,而最右下需新增一列Tile。
有開發過TileBase或Platform之類遊戲的人,應該很能理解這種顯示/隱藏動作。

最直覺的方式應該是以_visible的true及false的就可以了。

但我個人發現,以_visible控制雖然方便,但對效能提昇上卻是有限,尤其當地圖元素非常多時,場景移動起來還是非常慢。

目前測得較快的方式是以attachMovie及removeMovie來做顯隱。(扯那麼多,就這句話是重點 -_-")
就是直接將MC刪除,而非隱藏而已。當需用時再以attachMovie新增。只是寫起來就比_visible多個好幾行。
測試結果執行效能會比_visible快不少。

我猜想是_visible雖然在視覺上將MC隱藏了,但實際上仍佔用了許多系統資源,用刪除的方式來爭取更多資源回來。(這部份個人所知有限,還請各方高手給予指教)

當然在刪除之前,還是需要將他該有的資訊記住,以便下次場景捲回來時,用attachMovie才知道位置在哪,類型是什麼。所以MC本身最好是不含任何資訊,所有資訊另外以Object來儲存。

以上小小心得,願與各位FlashGame同好分享~

沒有留言: