Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在libgdx中创建非常简单的暂停/恢复游戏_Java_Libgdx - Fatal编程技术网

Java 如何在libgdx中创建非常简单的暂停/恢复游戏

Java 如何在libgdx中创建非常简单的暂停/恢复游戏,java,libgdx,Java,Libgdx,我是libgdx的新手, 如何在libgdx中创建非常简单的暂停/恢复游戏 我正在尝试使用libgdx实现简单的游戏。我想创建暂停游戏,但不知道如何根据用户输入暂停和恢复游戏。请建议想法以及一些实用代码来实现相同的想法。我正在使用libgdx库中演示的简单游戏代码。多谢各位 public class MyGdxGame extends ApplicationAdapter { SpriteBatch batch; Texture img; float x; flo

我是libgdx的新手, 如何在libgdx中创建非常简单的暂停/恢复游戏

我正在尝试使用libgdx实现简单的游戏。我想创建暂停游戏,但不知道如何根据用户输入暂停和恢复游戏。请建议想法以及一些实用代码来实现相同的想法。我正在使用libgdx库中演示的简单游戏代码。多谢各位

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    float x;
    float y;

@Override
public void create () {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    x= x+4;

    if(Gdx.input.isKeyPressed(Input.Keys.P)){
      // pause
        
    }

    batch.begin();
    batch.draw(img, x, y);
    batch.end();
}

@Override
public void dispose () {
    batch.dispose();
    img.dispose();
}
}

按p键按游戏

if(Gdx.input.isKeyPressed(Input.Keys.P)){
      // if(game.pause()){
             game.resume();
          }else{
           game.pause();
             }

    }

有什么想法吗???谢谢

您的渲染方法称为repeatable,“暂停”的含义由您决定。您必须实现处理“暂停”状态的逻辑,因为这对libGDX没有任何意义

若你们想在游戏暂停但仍要绘制的时候冻结一切,最好的方法是(IMHO)将绘制和计算(动作和内容)完全分开。因此,当调用渲染方法时,您将调用绘图方法一次(以绘制图形),但您也将计算应调用计算方法的次数(以独立于帧速率的相同游戏速度),并调用多次

然后,当游戏暂停时,您将跳过调用计算方法,而只调用绘图方法。因此,任何东西都不会移动,直到暂停结束,才会绘制相同的图形

为了保持暂停状态,可以使用一些布尔变量。每次按下p键时,应将其反转,如:

if(Gdx.input.isKeyPressed(Input.Keys.P)){
    paused = !paused;
}

或者其他什么(如@Tenfour04所建议的)。

保留一个
布尔值
成员变量
ispused
,并在按p键的基础上进行切换。如果(!isPaused)
,请将游戏更新代码包装在
中。