2014-02-05 36 views
0

我在渲染方法创建一个超类一无所有:我重写渲染阶段没有拿得出

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(); 

} 

}

但舞台不会被绘制。我知道这一点,因为我期望看到背景图像,但它只是一个空白的屏幕。

我在这里做错了什么?

回答

0

在​​构造函数行应该是:

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

,或者你也可以这样做:

stage = new Stage() 

但你必须设置视口,stage.setViewport(float, float, boolean)resize(float, float)

1

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

+0

为什么?你甚至怎么知道SuperClass的功能? – noone

+0

@antiamoeba就像我说过的,SuperClass的渲染方法没有任何内容。 –

0

你的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); 

    } 

} 

有了这个代码渲染()方法应该在每一个游戏循环中调用。

+0

render方法在每个循环中都被调用。我已经尝试了你以前的建议,并且工作正常,但我想为这个新项目使用不同的方法。 –