【问题标题】:Libgdx Actor Scened2d Draw method does not draw nothingLibgdx Actor Scened2d Draw 方法不绘制任何内容
【发布时间】:2016-07-08 10:21:40
【问题描述】:

我已经开始了一个非常小的基于 Scene2d 的 Libgdx 项目。我下载了最后一个版本的 LGDX。我试图找到一些信息,但不清楚。 问题是我只得到一个黑屏死机。什么都没发生 我已经按照代码和日志进行了操作,并且我确信我在我的 Actor 中到达 Draw 方法时没有结果:

提前谢谢你。

public class ActorBall extends Actor implements Disposable {
private  Texture ballTexture;
private TextureRegion ballTextureRegion;

public ActorBall() {
    bolaTexture = new Texture("redball.png");

    ballTextureRegion = new TextureRegion(ballTexture, 300,300);
    setSize(300,300);
}

@Override
public void dispose(){
    bolaTexture.dispose();
}


@Override
public void draw(Batch batch, float parentAlpha) {
    Color col = getColor();
    batch.setColor(col.r,col.g, col.b,col.a * parentAlpha);
    Gdx.app.log("App","where are you");
    batch.draw(ballTextureRegion,getX(),getY(),getOriginX(), 
    getOriginY(),getWidth(), getHeight(), getScaleX(),   getScaleY(),getRotation());
 }

@Override
public void act(float delta) {
    super.act(delta);
}
}

我的屏幕类是从 Screen 扩展而来的:

public class scene extends scenebase {

private final OrthographicCamera camera;
private MyGdxGame game ;
private Stage stage; // los Stages son inputprocessors
private ActorBall ball;

public scene(MyGdxGame game) {
    super(game);
    this.game = game;


    camera = new OrthographicCamera();
    camera.setToOrtho(false, 800, 480);

    stage = new Stage(new ScreenViewport());
    ball = new ActorBall();
    ball.setPosition(0,0);
    stage.addActor(ball);
}

@Override
public void render(float delta) {
   // super.render(delta);
    Gdx.gl.glClearColor(0,0,0.0f,1);
    Gdx.gl.glClear (GL20.GL_COLOR_BUFFER_BIT);

    camera.update();
   // game.batch.setProjectionMatrix(camera.combined);

    stage.draw();
    stage.act();
}

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

}
}

最后是我的主要游戏:

public class MyGdxGame extends Game {


private AssetManager manager;
private scene screenscene;

@Override
public void create() {
    manager = new AssetManager();
    manager.load("redball.png", Texture.class);
    manager.finishLoading();


    // Enter the loading screen to load the assets.
    screenscene = new scene(this);
    setScreen(screenscene);
}

@Override
public void render () {
    super.render(); // This is very important!!!!!!!!
    Gdx.gl.glClearColor(0, 0, 0.1f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

}


public AssetManager getManager() {
    return this.manager;
}
}

【问题讨论】:

    标签: libgdx draw scene2d


    【解决方案1】:
    @Override
    public void render () {
        super.render(); // This is very important!!!!!!!!
        Gdx.gl.glClearColor(0, 0, 0.1f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    }
    

    它的作用是首先渲染所有内容,然后清除屏幕。需要先清空再渲染。

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多