2011-03-15 111 views
2

我目前正試圖在我的android設備上實現簡單的彈跳球(在2D中)(基於設備旋轉的物理和稍後進入的多個球)。Android畫布重繪30fps

我創建了一個CustomDrawView類,該類擴展了ViewonDraw函數,該函數在屏幕的中心繪製了一個圓。使它正確移動的算術是無足輕重的,因爲我的問題是我應該在CustomDrawView上調用invalidate

  • 我應該做一個新的線程來處理這個基於時間?如Thread.sleep(1000/30); view.invalidate(對於30fps)
  • 我應該讓它在基於其他方法的同一線程中運行嗎?

Ofcourse電池是一個重要的因素藏漢,哪種方法最適合節省電池?

回答

2

從我看到的Android視圖來看,它們並不是最好的,如果你打算用幀率做任何事情是非常重要的。它們雪球速度非常快,並且使用的消息傳遞管道通常是您的程序執行該幀時最慢的事情。我現在將渲染轉移到OpenGL中。使用SurfaceView,你仍然可以很快得到設置(OK SurfaceView也不是很好,但比所有Views更好)。

如果我要使用視圖,我會使用你的第一個方法並設置一個定時線程,使用它像一個標準的Game循環執行更新然後觸發一個繪製,然後等待確保完整的1/30一秒鐘已經過去並循環。