我在为我的第一个游戏创建游戏循环时遇到了问题。我已经阅读了很多关于它的内容,但仍然无法弄明白。它基于OpenGL,所以我使用onDrawFrame作为游戏循环,它在我的手机上工作正常。问题是onDrawFrame的刷新时间取决于硬件,因此在某些设备上运行速度太快。所以我想要的是添加一个单独的游戏循环,它将在所有智能手机上不断刷新自己。 (而onDrawFrame只会照顾图形)
至于现在我有:
onDrawFrame激活myGameUpdate函数,该函数根据myGLSurfaceView中的信息控制游戏中所有对象的位置变化
我尝试过创建新的Runnable但它似乎不起作用,我无法弄清楚如何启动runnable以及我应该放在哪里(我已经尝试将它放在myGameRenderer类中,但是它似乎没有用,没有任何动静:
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上以启动它但没有效果。 那么 - 通用的想法好吗?以及如何启动循环?在哪里放置?或者我应该使用其他方式吗?
答案 0 :(得分:0)
好的很简单 - 我只是缺少r.run(); 但总的来说还有一些东西。现在它按照我想要的方式工作 - 我的意思是框架不依赖于硬件,但是一切都不像它那样平滑 - 并且3d中的一部分对象是闪烁的。看起来像某些物体明显被绘制得更快,有些后来看起来很难看。 那么我做错了什么?还有更好的方法吗?