我是这个Android游戏开发的新手,我正在尝试创建一个平台游戏。是否有一种方法可以使某些操作(例如更改变量值)有几秒延迟而没有延迟机制暂停其他操作?我已经尝试了
new Thread(){
public void run(){
try {
Thread.sleep(2000);
//variable value change
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
我发现的方法,但似乎这种方法会停止使用它运行的任何背景音乐。我也尝试了Handler
方法,但似乎让游戏崩溃了。我正在使用libgdx
框架。
答案 0 :(得分:3)
你必须明白你的游戏是在无限循环中运行的。通常,您将无休止地获得LibGDX调用的render(float deltaTime)
。
你可以自己这样做:
public void render(float deltaTime) {
countDown -= deltaTime;
if (countDown <= 0) {
doSomething();
}
}
或者您可以使用Timer
类的LibGDX代替:
float delay = 1; // seconds
Timer.schedule(new Task(){
@Override
public void run() {
// Do your work
}
}, delay);
答案 1 :(得分:-2)
如果您计划进行OpenGL游戏(我鼓励您),您可以使用Renderer类构建int方法:onDrawFrame(GL10 gl)
,onSurfaceChanged(GL10 gl)
,onSurfaceCreated(GL10 gl)
,你感兴趣的是onDrawFrame(GL10 gl)
。
因此,扩展Renderer的类的模板应该是这样的:
public class CustomRenderer extends Renderer {
@Override
public void onDrawFrame(GL10 gl) {
try {
Thread.sleep((float)(1000/60)); // 1000 milliseconds divided by 60 so you get 60fps
//Your code here
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void onSurfaceChanged(GL10 gl) {
//Your code here
}
@Override
public void onSurfaceCreater(GL10 gl) {
//Your code here
}
}