我在为我的第一款游戏创建游戏循环时遇到了问题。我已经阅读了很多关于它的内容,但仍然无法弄清楚。它基于 OpenGL,所以我使用 onDrawFrame 作为游戏循环,它在我的手机上运行良好。问题是 onDrawFrame 的刷新时间取决于硬件,因此它在某些设备上运行速度太快。所以我想要的是添加一个单独的游戏循环,它会在所有智能手机上以恒定的时间周期自我刷新。(并且 onDrawFrame 只会处理应有的图形)
至于现在我有:
- myGameRenderer 类与所有 openGl 东西一个 onDrawFrame
- 支持触摸事件的 myGLSurfaceView
- 我的游戏活动
onDrawFrame 激活 myGameUpdate 函数,该函数根据来自 myGLSurfaceView 的信息控制游戏中所有对象的位置变化
我尝试过创建新的 Runnable,但它似乎不起作用,我不知道如何启动该 runnable 以及我应该将它放在哪里(我试图将它放在 myGameRenderer 类中,但它没有t似乎工作,没有什么动静:
private final Runnable mUpdateDisplay = new Runnable() {
@Override
public void run() {
update();
}};
private void update() {
//some update stuff blablabla
//some update stuff blablabla
mHandler.postDelayed(mUpdateDisplay,40); //to refresh at 25 fps
}
但我想我不明白它 - 我的意思是我创建了这个可运行文件。我试图将它放在 onCreateSurface 中以启动它,但没有效果。所以 - 一般的想法可以吗?以及如何开始循环?放在哪里?或者我应该使用其他方式吗?