2011-08-12 30 views
0

我一直在一個Flash遊戲上工作一個月,應該可以在瀏覽器中進行操作(光照計算)。這就是說,我注意到在一些瀏覽器中,遊戲以15fps的速度運行(遊戲應該以80fps運行)。這已經知道在IE9的情況發生,並快速修復是這一行添加到HTML的頂部:Actionscript3/flash cs4:如何解決從瀏覽器啓動時的延遲

<meta http-equiv="X-UA-Compatible" value="IE=9"> 

這是一個速戰速決,迫使IE瀏覽器到兼容模式,大大提高了FPS(大約... 60,比方說)。

儘管如此,我相信遊戲的運行速度應該比每個瀏覽器都慢,這在html版本與swf比較時很明顯。

遊戲中的移動(「html」)也「相當明顯」:這些遊戲會傷害遊戲的美感,從而影響遊戲的可玩性!

所有這些讓我相信瀏覽器限制了對電腦顯卡的訪問;

1)這是在HTML慢,而且在SWF

2)快於正常速度聲音播放,但圖形滯後

編輯

3)所有顯卡在遊戲中相當低的分辨率(即,顯示爲寬度1xheight1的圖形是寬度爲1xheight1png的動畫片段)+儘可能小

4)我製作了非常(計算上)簡單的flash項目並看到相同的圖形運動問題。

任何人都可以給我一些建議,關於如何在瀏覽器中增加遊戲的平滑度?

+1

我相信超高幀速率(超過50 fps)實際上會在某些瀏覽器中減慢播放器速度。嘗試降低它低於50. 此外,由於需要解壓縮,壓縮的圖形可能導致口吃。如果你還沒有,你也可能想看看對象池,因爲如果你從內存中釋放了很多對象,垃圾收集器可能會導致這些口吃者輪迴。 –

+0

關於「......高幀速率(50 fps以上)......」我剛纔已經試圖將遊戲速度降低到<50 fps,並且只是將遊戲中的所有增量轉換爲與80fps中的移動相匹配版。沒有明顯的區別:(關於圖形的第二部分:我想說 - 使用壓縮圖形將是一個壞主意!!!!我的意思是說:在我的圖形對象中使用的PNG是相同的分辨率因爲它們會出現在遊戲中 現在進入垃圾收集器(GC):我對這個問題持懷疑態度。對於swf和html版本,GC的工作是不是應該相同? –

+0

http:// www。 kaourantin.net/2006/05/frame-rates-in-flash-player.html –

回答

1

這可能是SWF嵌入HTML頁面的一個症狀。 Flash支持許多「窗口模式」,它們決定了如何將內容呈現到瀏覽器窗口中。當SWF嵌入HTML頁面時,通過參數wmode設置該參數。

根據Adobe's documentation,這應設置爲「直接」以獲得最佳性能:

直接 - 使用直接到路徑渲染。這會繞過屏幕緩衝區中的合成 ,並直接將SWF內容呈現在屏幕上。 建議使用此wmode值爲 內容播放提供最佳性能,並且可以對使用舞臺視頻或舞臺3D的SWF 內容進行硬件加速演示。

在實踐中,wmode可以錯誤的操作,因此它可能有助於嘗試在documentation提到的替代技術。

這可能有助於提高性能的其他選項有:

  • 使用stage.scaleMode = StageScaleMode.NO_SCALE。如果嵌入的大小與原始大小不匹配,這將防止縮放內容。縮放有助於CPU使用率,因此禁用它應該會提高幀速率(請參閱StageScaleMode#NO_SCALE)。
  • 在非透明影片剪輯(例如根影片剪輯)上設置opaqueBackground。透明度需要額外的計算來將前景色與背景色相乘。設置不透明背景會繞過這些額外的計算,並可能導致性能提升。 (請參閱DisplayObject#opaqueBackground