Android 舞台不';不要被吸引

Android 舞台不';不要被吸引,android,libgdx,stage,Android,Libgdx,Stage,我创建了一个在render方法中没有任何内容的超类: public class SuperClass implements InputProcessor { public SuperClass(MyGame game) { } public void render() { } // InputProcessor overriden methods here } public class SubClass extends SuperClass {

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

public class SuperClass implements InputProcessor {

    public SuperClass(MyGame game) {

    }

    public void render() {

    }

    // InputProcessor overriden methods here
}
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();

}
在子类中,我覆盖render方法:

public class SuperClass implements InputProcessor {

    public SuperClass(MyGame game) {

    }

    public void render() {

    }

    // InputProcessor overriden methods here
}
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();

}
}

但舞台并没有被吸引。我知道这一点,因为我希望看到背景图像,但它只是一个空白屏幕


我做错了什么?

你应该在MyGame渲染方法中调用你的超类渲染方法。

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

class MyGame extends Game {

  @Override
  public void create() {

    setScreen(new MainScreen());
  }       
}
在实现屏幕界面的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()方法。

子类构造函数中的行应为:

stage = new Stage(800, 480, false);
或者您也可以这样做:

stage = new Stage()

但是您必须在
resize(float,float)
中设置视口,
stage.setViewport(float,float,boolean)
为什么?你怎么知道超类是做什么的?@antiamoeba就像我说的,超类的render方法里面什么都没有。render方法在每个循环中都会被调用。我以前尝试过你的建议,但效果不错,但我想为这个新项目使用不同的方法。