Libgdx Table 混乱
Libgdx Table Confusion
我正在尝试以垂直居中的方式显示图像和屏幕菜单按钮。
我几乎只使用演员就完成了,但我认为布局可能是这里的最佳实践。
所以我已经完成了:
public MenuScreen(final MyGame myGame) {
this.myGame = myGame;
font = new BitmapFont();
camera = new OrthographicCamera();
camera.setToOrtho(false, 480, 800);
stage = new Stage();
batch = new SpriteBatch();
stage.getViewport() .setCamera(camera);
skin = new Skin(Gdx.files.internal("menu/glassy-ui.json"));
button = new TextButton("NEW GAME", skin);
button.setTransform(true);
button.setScale(0.5f);
button.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
myGame.setScreen(new GameScreen( myGame));
}
});
Image imageLogo = new Image( new Texture(Gdx.files.internal("titleLogo.png")));
// imageLogo.setScaling(Scaling.fit);
Table myTable = new Table();
myTable.setFillParent(true);
myTable .add(imageLogo);// .width(imageLogo.getWidth()).height(imageLogo.getHeight()).row() ;
myTable.row() ;
myTable.add(button);
stage.addActor(myTable);
Gdx.input.setInputProcessor(stage);
batch.setProjectionMatrix(camera.combined);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.begin();
stage.act(delta);
stage.draw();
batch.end();
}
但舞台的视口似乎没有影响屏幕外的 table 区域,我什至不确定图像是否显示...
这是我看到的:
尝试阅读 wiki 和其他开发人员的方法。
据我所知,每个人都有不同的系统来实现该目标,没有人使用相机,我怀疑这才是我真正的问题。
谢谢!
stage.setDebugAll(true); //enable debug mode and check what's going on
camera.setToOrtho(false, 480, 800);
这样您就可以通过固定值设置相机的视口。您不是 resizing/scaling 任何 Actor,因此请确保您的所有 Actor 的大小都应在 480、800 的范围内。
camera.position.set(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2,1);
这会将您的相机移到中央。
我正在尝试以垂直居中的方式显示图像和屏幕菜单按钮。
我几乎只使用演员就完成了,但我认为布局可能是这里的最佳实践。
所以我已经完成了:
public MenuScreen(final MyGame myGame) {
this.myGame = myGame;
font = new BitmapFont();
camera = new OrthographicCamera();
camera.setToOrtho(false, 480, 800);
stage = new Stage();
batch = new SpriteBatch();
stage.getViewport() .setCamera(camera);
skin = new Skin(Gdx.files.internal("menu/glassy-ui.json"));
button = new TextButton("NEW GAME", skin);
button.setTransform(true);
button.setScale(0.5f);
button.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
myGame.setScreen(new GameScreen( myGame));
}
});
Image imageLogo = new Image( new Texture(Gdx.files.internal("titleLogo.png")));
// imageLogo.setScaling(Scaling.fit);
Table myTable = new Table();
myTable.setFillParent(true);
myTable .add(imageLogo);// .width(imageLogo.getWidth()).height(imageLogo.getHeight()).row() ;
myTable.row() ;
myTable.add(button);
stage.addActor(myTable);
Gdx.input.setInputProcessor(stage);
batch.setProjectionMatrix(camera.combined);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.begin();
stage.act(delta);
stage.draw();
batch.end();
}
但舞台的视口似乎没有影响屏幕外的 table 区域,我什至不确定图像是否显示...
这是我看到的:
尝试阅读 wiki 和其他开发人员的方法。 据我所知,每个人都有不同的系统来实现该目标,没有人使用相机,我怀疑这才是我真正的问题。
谢谢!
stage.setDebugAll(true); //enable debug mode and check what's going on
camera.setToOrtho(false, 480, 800);
这样您就可以通过固定值设置相机的视口。您不是 resizing/scaling 任何 Actor,因此请确保您的所有 Actor 的大小都应在 480、800 的范围内。
camera.position.set(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2,1);
这会将您的相机移到中央。