Android 舞台不';不要被吸引
我创建了一个在render方法中没有任何内容的超类: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 {
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方法在每个循环中都会被调用。我以前尝试过你的建议,但效果不错,但我想为这个新项目使用不同的方法。