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();
}
}
私は、関心のある方法がrender
とrenderProgressBar
あると思います。私が言ったように、読み込みが終了するまで白い背景が得られますが、renderProgressBar
の中の印刷が正しい値を表示します。
Bah、ofc!私は何か小さいことが分かっていた。 'Render()'に設定する必要はありますか? –
レンダリングメソッドで呼び出すことができます – Aryan
あなたはステージ上に何かを持っていますか?もしあれば、 'stage.draw()'の後に 'renderProgressBar()'を呼び出します。 – Aryan