我在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();
}
}
但舞台不会被画出来。我知道这是因为我希望看到背景图片,但它只是一个空白的屏幕。
我在这里做错了什么?
答案 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)
。