首先,我會說這裏的上下文是Actionscript 3.0(IDE:Flashbuilder)以及Starling Framework。AS3瓷磚地圖渲染(具有1000個瓷磚)
所以,我想創建一個可以用於平臺遊戲或類似的平鋪地圖。
我想在800x600像素的舞臺上使用8x8像素圖塊,我遇到的問題是我不知道如何將這些7500+圖塊對象添加到舞臺上,而不會顯着降低幀率。
我發現性能的下降來自將每個拼貼添加到舞臺上,而不是從初始化每個Tile對象。
我知道我沒有提供太多具體的信息,但是我要求的是,如果有一種標準方法可以將數以千計的靜態物體吸引到舞臺上而不會損失性能。我覺得有一種方法,我還沒有找到它。
更新:
所有的你的幫助後,我發現似乎是一個很好的解決方案。起初,我想實現Amy的解決方案,使用copyPixels()和draw()爲整個地圖製作一個大的位圖數據,然後將其渲染到屏幕上。然而,我想知道是否有與此相當的Starling,因爲如果我不需要將Starling與Native Flash混合,那麼一切都將變得更加簡單。
再次感謝Amy,我多看了一下Starling的RenderTexture類,發現使用「drawBundled()」和「draw()」方法,我可以很容易地將所有的圖塊繪製到RenderTexture中,並且然後將RenderTexture放入圖像(Starling的圖像類),然後將該圖像添加到屏幕。
這個解決方案比我之前嘗試過的愚蠢的慢解決方案快100萬倍,具有平坦化精靈等。它的初始化時間更快,並且renderTexture的圖像在屏幕上時似乎沒有幀速下降。
我想用這個測試的一件事是,如果在遊戲過程中很容易更新瓦片的圖形。比如說,如果水從源頭(或某物)傳播而「草」瓦必須變成「水」瓦,RenderTexture和它的圖像是否能夠改變它們的外觀,而不會出現某種滯後尖峯或性能呃逆。我會很快對此進行測試。
謝謝大家的幫助!
謝謝,像這樣的出發點將我推向正確的方向正是我需要的! – Brucef 2012-08-12 02:11:39
不客氣:) – 2012-08-12 02:13:47
現在我只需要弄清楚如何使用本機Flash顯示對象與Starling框架協同工作...... – Brucef 2012-08-12 02:27:08