【问题标题】:LibGDX render() method not firingLibGDX render() 方法未触发
【发布时间】:2013-10-14 03:18:56
【问题描述】:

我有一个渲染方法,但我不知道为什么它没有发生。这是我到目前为止的代码:

public class DevMaze extends Game {

    SpriteBatch batch;
    BitmapFont font;

    public void create() {
        ...
        this.setScreen(new MainMenuScreen(this));
        ...
    }

    public void render() {
        super.render();
    }

    ...
}

MainMenuScreen 已设置好并渲染得很好,代码如下:

    public class MainMenuScreen implements Screen {

    final DevMaze game;
    OrthographicCamera camera;

    public MainMenuScreen(final DevMaze g) {
        this.game = g;

        camera = new OrthographicCamera();
        camera.setToOrtho(false, 800, 480);
    }

    public void render(float delta) {
        ...
        if (Gdx.input.isTouched()) {
            game.setScreen(new GameScreen(game));    // This line runs
            dispose();
        }
    }

但是当我将屏幕设置为我的 GameScreen 时,构造函数运行得很好,但渲染方法永远不会触发:

public class GameScreen implements Screen {

    final DevMaze game;
    OrthographicCamera camera;
    ...

    public GameScreen(final DevMaze g) {
        this.game = g;

        // Create Camera
        camera = new OrthographicCamera();
        camera.setToOrtho(false, 800, 480);

        // Load assets
        ...

        System.out.println("ONE MORE LINE!");    // This prints
    }

    public void render() {
        System.out.println("MADE IT TO GAME SCREEN");    // This does not prints

        ...
    }

我需要知道为什么渲染方法没有触发。

我真的不知道从这里去哪里。我能找到的所有其他资源都告诉我确保我的游戏扩展类中有 super.render() - 我这样做了。我试图删除我认为不相关的代码并留下相关内容,但如果有任何其他信息需要您弄清楚这里发生了什么,请告诉我。

这也是我使用 LibGDX 的第一个项目之一,所以如果这是一个愚蠢的问题,请提前抱歉!

谢谢。

【问题讨论】:

    标签: java libgdx render


    【解决方案1】:

    public void render() 必须是 public void render(float deltaTime) 在您的 GameScreen 类中。我假设您在 GameScreen 中有另一种使用 deltaTime 的方法,它会被触发,否则它不会编译。

    【讨论】:

    • 总是(如果您使用 Eclipse)将“@Override”添加到您的类中应该覆盖超类方法的方法中。如果这不是真的,Eclipse 会警告你。
    • @P.T.当我在 Eclipse 中使用Add unimplemented methods 时,它会自动添加@Override。但是删除它不会产生警告,因为它是一个接口而不是扩展类。至少在我的 Eclipse 版本中它是这样工作的。对于课程,我会收到自动警告。
    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2012-02-05
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多