我目前正在尝试在我的android设备上实现简单的弹跳球(在2d中)(基于设备旋转的物理原理,稍后会出现多个球)。
我创建了一个CustomDrawView
类,该类使用View
函数扩展了onDraw
,该函数在屏幕的中心绘制了一个圆圈。使它正确移动的数学方法是无关紧要的,因为我的问题是我应该在CustomDrawView上调用invalidate
的位置。
我是否应该根据时间创建新线程来处理此问题?如Thread.sleep(1000/30); view.invalidate
(对于30fps)
我是否应该使它基于其他方法在同一线程中运行?
当然,电池也是一个重要因素,哪种方法最节省电池?
最佳答案
从我对Android的看法来看,如果您打算用帧速率制作任何东西,它们并不是最好的选择。它们迅速滚雪球,并且所使用的消息传递管道吸引它们通常是程序在该框架下执行的最慢的操作。我现在将渲染移到OpenGL中。使用SurfaceView,您仍然可以非常快速地进行设置(好的SurfaceView也不是很好,但是比所有View都好得多)。
如果要使用视图,我将使用您的第一种方法并设置一个计时线程,将其类似于标准游戏循环,执行更新,然后触发平局,然后等待以确保有完整的1/30秒通过和循环。