stage不会在libgdx中呈现,得到空指针错误

时间:2015-10-27 11:58:46

标签: java android libgdx actor stage

我只是想让Actor和Stage正常工作以设置基本流程,然后从那里开始。我每次都得到一个空指针,请帮忙。 Paddle和Ball类现在完全相同,Assets是一个用于加载纹理的静态类。

public class MyGame implements ApplicationListener {
public final static int WIDTH = 480;
public final static int HEIGHT = 800;
private Stage stage;
private Paddle paddle;
private Ball ball;




@Override
public void create () {
    Assets.load();
    Stage stage = new Stage(new ScreenViewport());
    paddle = new Paddle();
    ball = new Ball();
    stage.addActor(paddle);
    stage.addActor(ball);


}

@Override
public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    stage.draw();

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void resize(int width, int height){
    stage.getViewport().update(width,height,true);

}

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


}

public int getWidth(){return WIDTH;}
public int getHeight(){return HEIGHT;}

}

public class Paddle extends Actor {


Rectangle bounds;


public Paddle(){

    setPosition(150,10);


}

@Override
public void act(float delta){

}


public void draw(Batch batch , float parentAlpha){

    batch.draw(Assets.paddle,150,10 );
}

private void updateBounds() {bounds.set(getX(), getY(), getWidth(), getHeight());
}
public Rectangle getBounds() {
    return bounds;
}

}

2 个答案:

答案 0 :(得分:0)

问题是,您在create方法中创建了Stage,但您从未将其与私人成员stage对齐。
因此,不要在Stage stage = new Stage()中写create,而只需写stage = new Stage() 另请记住将ExceptionStack Trace添加到您的SO-Question中,并标记Exception似乎发生的行。这将使每个想要帮助的人更容易。

答案 1 :(得分:0)

如果相同的变量"阶段"

,则删除第二阶段声明
@Override
public void create () {
    Assets.load();
    stage = new Stage(new ScreenViewport()); 
    paddle = new Paddle();
    ball = new Ball();
    stage.addActor(paddle);
    stage.addActor(ball);


}