2012-01-24 36 views
0

我使用3800x3000位圖作爲遊戲的背景。吐溫無滯後大位圖

現在,我首先顯示整個位圖 - 風景 - ,然後放大字符。 我從GreenSock使用TweenMax,但即使使用此高級補間類,我的位圖也不會移動和縮放平滑。

任何想法如何解決這個問題?我也想使用更小的位圖並對它們進行縮放,但是我會失去質量,並且我無法模糊位圖來隱藏質量損失,因爲位圖中也存在地形,我想模糊一點。

回答

1

爲什麼位圖如此之大?您的目標設備/屏幕是否擴展到3800x3000?

建議:

  1. 迴避這個問題。使用較小的位圖,或將其分解爲幾個小的位圖,或使用矢量形狀再現更多的背景。顯然,並非每一件藝術品都可以作​​爲矢量重新創建,但是如果可以的話,您將獲得巨大的文件大小節省和性能提升。

  2. 確認cacheAsBitmap已啓用。這告訴Flash優化位圖的渲染。當位圖沒有過濾器,很少變換,並且不經常移動或旋轉時,它效果最佳。它是不移動背景的理想選擇。硬件模式:如果您想獲得極高的視覺效果,並且您的目標受衆支持最新的Flash Player,請嘗試將背景創建爲3D舞臺後面3D場景中矩形的紋理。看到這個帖子由蒂博因貝特爲我的意思的想法:http://www.bytearray.org/?p=2555

+0

大聲笑,感謝您的快速回復: 1.我使用這麼大的位圖,因爲您可以行走的地形非常長; 2.我已經把它打開了; 3.我使用2天的二維框架爲分鐘,並在發佈此問題前停止。我嘗試了'Starling'框架,但是有太多的缺點。 所以我認爲分裂位圖是唯一的選擇? –

+1

分裂聽起來像是最好的選擇。即使你不使用平臺作爲背景,你也可以從平截頭體的選擇中借鑑一個想法。您可以將背景處理爲像矩陣的二維矩陣和用戶的視口作爲移動它們的矩形。每個框架左右,對視口邊界與背景圖塊的元素進行命中測試將顯示哪些圖塊需要在舞臺上顯示。其他人可以暫時從顯示列表中刪除,從而提高性能。 –

1

這真的不是一個Flash的具體問題,因爲它更多的在自然界一般遊戲開發的問題。無論如何,在內存中操作一個巨大的基本位圖(使用任何語言)都會變得很慢。在每次繪圖調用中,您實際上將數百兆內存移動到當前幀緩衝區中。如果你看看側邊滾輪等最大型的背景遊戲,背景是由許多次重複數百次的小物體組成的。然後將這種技術結合起來,只將當前屏幕緩衝區中可見的小精靈放到舞臺上。在地圖上移動時,可以移除無法再看到的部分,並可以移除屏幕移動到的更多區塊。這部分技術通常稱爲平鋪緩衝。希望這可以幫助!