2017-07-03 6 views
2

単純な読み込み画面を作成しようとしている。以下のコードは正しいprogressを出力しますので、その部分が動作することは分かります。しかし、長方形は描画されていません。何が間違っているか分かりません。LibGdx:ShapererendrのRectが描画されない。

全LoadingScreen:

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の中の印刷が正しい値を表示します。

答えて

2

ステージカメラを使用してprojectionMatrixをShapeRendererに設定します。

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

Bah、ofc!私は何か小さいことが分かっていた。 'Render()'に設定する必要はありますか? –

+0

レンダリングメソッドで呼び出すことができます – Aryan

+0

あなたはステージ上に何かを持っていますか?もしあれば、 'stage.draw()'の後に 'renderProgressBar()'を呼び出します。 – Aryan

関連する問題