延迟行动

时间:2014-01-28 20:01:44

标签: java android libgdx

我是这个Android游戏开发的新手,我正在尝试创建一个平台游戏。是否有一种方法可以使某些操作(例如更改变量值)有几秒延迟而没有延迟机制暂停其他操作?我已经尝试了

new Thread(){
public void run(){
    try {
        Thread.sleep(2000);
        //variable value change
    } catch (InterruptedException e) {
        e.printStackTrace();
        }
    }
}.start();

我发现的方法,但似乎这种方法会停止使用它运行的任何背景音乐。我也尝试了Handler方法,但似乎让游戏崩溃了。我正在使用libgdx框架。

2 个答案:

答案 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
    }
}