【问题标题】:LibGdx: Shaperenderer Rect not being drawn on ScreenLibGdx:Sharenderer Rect 未在屏幕上绘制
【发布时间】:2017-07-03 18:08:42
【问题描述】:

尝试创建一个简单的加载屏幕。下面的代码打印出正确的progress,所以我知道这部分有效。但是没有绘制矩形。不知道出了什么问题。

满载屏幕:

public class LoadingScreen implements Screen {

  private static final float PROGRESS_BAR_WIDTH = MyGdxGame.WIDTH / 2f;
  private static final float PROGRESS_BAR_HEIGHT = 50f;

  GdxAssetManager assetManager;
  Stage stage;
  //Table mainTable;
  private ShapeRenderer shapeRenderer;
  private MyGdxGame game;

  public LoadingScreen(MyGdxGame game){
      this.game = game;
      assetManager = game.getAssetManager();
      shapeRenderer = new ShapeRenderer();
      stage = new Stage(new StretchViewport(MyGdxGame.WIDTH, MyGdxGame.HEIGHT));
  }

  @Override
  public void show() {
      assetManager.loadGeneral();
  }

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

      renderProgressBar();

      if (assetManager.getManager().update()) {
          game.setScreen(new LoginScreen(game));
      }

      stage.act(Gdx.graphics.getDeltaTime());
      stage.draw();
  }

  private void renderProgressBar() {
      float progress = assetManager.getManager().getProgress();
      System.out.println(PROGRESS_BAR_WIDTH * progress);
      shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
      shapeRenderer.setColor(Color.RED);
      shapeRenderer.rect(
            (MyGdxGame.WIDTH - PROGRESS_BAR_WIDTH) / 2f,
            (MyGdxGame.HEIGHT - PROGRESS_BAR_HEIGHT) / 2f,
            PROGRESS_BAR_WIDTH * progress,
            PROGRESS_BAR_HEIGHT
      );
      shapeRenderer.end();
  }

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

  @Override
  public void pause() {

  }

  @Override
  public void resume() {

  }

  @Override
  public void hide() {
      dispose();
  }

  @Override
  public void dispose() {
      stage.dispose();
      shapeRenderer.dispose();
  }
}

我猜感兴趣的方法是renderrenderProgressBar。就像我说的那样,在加载完成之前,我得到的只是一个白色背景,但 renderProgressBar 内的打印会打印正确的值。

【问题讨论】:

    标签: java libgdx


    【解决方案1】:

    使用舞台相机设置ShapeRenderer的投影矩阵。

    shapeRenderer.setProjectionMatrix(stage.getCamera().combined);
    

    【讨论】:

    • 呸,ofc!知道我错过了一些小东西。需要设置在Render(),对吗?
    • 你可以在渲染方法中调用
    • 舞台上有什么吗?如果是,请在stage.draw() 之后调用renderProgressBar()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多