舞台不会被画出来

时间:2014-02-05 17:01:52

标签: android libgdx stage

我在render方法中创建了一个没有任何内容的超类:

public class SuperClass implements InputProcessor {

    public SuperClass(MyGame game) {

    }

    public void render() {

    }

    // InputProcessor overriden methods here
}

在子类中,我重写了render方法:

public class SubClass extends SuperClass {

Stage stage;

public SubClass(MyGame game) {
    super(game);

    stage = new Stage(0, 0, false);

    skin = new Skin(Gdx.files.internal("data/uiskin.json"));

    Gdx.input.setInputProcessor(stage);

    Image image = new Image(new Texture(Gdx.files.internal("bg.png")));
    image.setPosition(0, 0);
    image.setWidth(800);
    image.setHeight(480);
    stage.addActor(image);

}

@Override
public void render() {

    stage.act(Gdx.graphics.getDeltaTime());

    stage.draw();

}

}

但舞台不会被画出来。我知道这是因为我希望看到背景图片,但它只是一个空白的屏幕。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

您应该在MyGame渲染方法中调用SuperClass渲染方法。

答案 1 :(得分:0)

你的render()方法是否在每个游戏循环中被调用? 我通常做的是创建一个扩展游戏并设置屏幕的对象。

class MyGame extends Game {

  @Override
  public void create() {

    setScreen(new MainScreen());
  }       
}

在实现Screen界面的MainScreen类中,我可以创建我的舞台:

class MainScreen implements Screen {

    Stage stage = new Stage(0, 0);


    @Override
    public void dispose() {
        stage.dispose();

    }

    @Override
    public void hide() {

    }

    @Override
    public void pause() {

    }

    @Override
    public void render(float delta) {


        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);


        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();


    }

    @Override
    public void resize(int width, int height) {

    }

    @Override
    public void resume() {
    }

    @Override
    public void show() {
    stage = new Stage(0, 0, false);

         skin = new Skin(Gdx.files.internal("data/uiskin.json"));

         Gdx.input.setInputProcessor(stage);

         Image image = new Image(new Texture(Gdx.files.internal("bg.png")));
         image.setPosition(0, 0);
         image.setWidth(800);
         image.setHeight(480);
         stage.addActor(image);

    }

}

使用此代码,应在每个游戏循环中调用render()方法。

答案 2 :(得分:0)

SubClass构造函数中的行应为:

stage = new Stage(800, 480, false);

或者你也可以这样做:

stage = new Stage()

但是您必须在stage.setViewport(float, float, boolean)中设置视口resize(float, float)