我在過去6個月左右一直在研究Android遊戲,並且在這裏發佈了幾次關於我無法擺脫的各種滯後問題。是不可能讓Android遊戲免費的嗎?我在這裏瘋狂
我最終抓住了LunarLander的例子,並將其剝離到它的核心組件,看看我是否能夠做任何不滯後的事情。它所做的只是更改畫布每幀的翻譯量,然後在畫布上繪製背景。即使這樣,你可以得到一個SurfaceView應用程序一樣簡單 - 口吃...
我的遊戲是一個滾動遊戲,你不斷向上移動屏幕(想象飛行遊戲),但我目前的方式做背景會導致大約50-100毫秒每秒不斷的口吃。這不是遊戲突破,但它非常分散注意力,使得遊戲看起來好像是由一個完整的白癡編程的(儘管我開始懷疑這可能是這種情況)。
不,它不是垃圾收集器,在遊戲的運行循環中根本沒有創建新對象,並且GC在我的遊戲運行時幾乎沒有運行。
我實際上把我的頭髮弄得沮喪。我花了超過40個小時,試圖擺脫這個簡單的應用程序例子在上個星期的滯後,這讓我瘋狂。應用程序如何與我所鏈接的應用程序一樣簡單可能存在滯後問題?你不會認爲滾動的背景可能會比這更簡單...
注意:這個演示在我的手機(摩托羅拉里程碑)上不斷獲得60fps左右。在示例中取消註釋FPS代碼以查看FPS。
TL; DR:非常簡單的程序,只是一個滾動的背景顯示口吃。請看看...
基於鏈路斷LunarLander例如下載簡單的口吃例如: http://dl.dropbox.com/u/4972001/LunarLander.rar
是否噴氣男孩演示有口吃上運行時,您的手機? http://developer.android.com/resources/samples/JetBoy/index.html – jhouse 2011-02-04 16:04:32
Traceview告訴你什麼?另外,在將來,請跳過火焰誘餌標題。 – CommonsWare 2011-02-04 16:12:40
對不起火焰誘餌,當我寫出來的時候,我非常沮喪(因爲我相信你可以說)。 Traveview沒有什麼特別之處。所有draw/updatePhysics調用之間有相同的間隔。這似乎是可見但不可衡量的東西,這是令人困惑的。另外,是的,JetBoy也有口吃問題。 – Smills 2011-02-04 16:18:15