gpt4 book ai didi

java - LIBGDX 字体在不同平台上的不同位置

转载 作者:行者123 更新时间:2023-11-30 00:29:00 25 4
gpt4 key购买 nike

当我运行我的应用程序的 android 版本时,使用位图绘制的文本在我的桌面版本中显示的位置与我的应用程序的 android 版本中的(方式)不同。我已经查过这个问题并读到我必须将 Projectmatrix 设置为合并,但这没有帮助。不知道它跨平台在不同位置显示文本的原因是什么。

public class HighScoresScreen implements Screen{

private CrossplatformApp game;
private Stage stage;
private TextButton backButton;
private OrthographicCamera camera;
private Table table;
BitmapFont font = new BitmapFont();
private Skin skin;
private Texture background;
private String[] data;
private String[] playerscores;
String nm = "";
String sc = "";

public HighScoresScreen (CrossplatformApp game) {
this.game = game;
this.camera = new OrthographicCamera(Constants.WIDTH, Constants.HEIGHT);
this.camera.position.set(Constants.WIDTH/2, Constants.HEIGHT/2, 0);
this.camera.update();
game.batch.setProjectionMatrix(this.camera.combined);
this.skin = new Skin(Gdx.files.internal("skin/uiskin.json"));
this.background = new Texture("Screens/HighscoresScreen/highscores.png");
}


@Override
public void show() {

backButton = new TextButton("back", skin);
backButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
game.setScreen(new MenuScreen(game));
MenuScreen.musicHandler.stopMusic();
}
});

Gdx.input.setInputProcessor(stage);

JSONfunctions json = new JSONfunctions();
parseJSON parse = new parseJSON(json.doInBackground());

for (String i : parse.getNames()){
if(i != null) {
nm += i;
nm += "\n\n";
} else {
break;
}
}

System.out.println(nm);
//
for (String i : parse.getScores()){
if(i != null) {
sc += i;
sc += "\n\n";
} else {
break;
}
}

table = new Table();
table.setFillParent(true);
table.bottom();
table.add(backButton).size(100, 100);
stage.addActor(table);
}

@Override
public void render(float delta) {
game.batch.begin();
game.batch.draw(background, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

font.draw(game.batch, nm, 100, 300);
font.draw(game.batch, sc, 480, 300);

game.batch.end();

}

@Override
public void resize(int width, int height) {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void hide() {

}

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

}
}

最佳答案

您需要更新相机的视口(viewport),然后使用更新后的视口(viewport)更新 SpriteBatch 的投影矩阵。

@Override
public void resize(int width, int height) {
camera.setToOrtho(false, width, height);
game.batch.setProjectionMatrix(camera.combined);
}

您还需要使用屏幕和高度更新 Stage 的视口(viewport)。

对于 nmsc 文本,您应该使用 Label

最好用ExtendViewprot代替FillViewport,看看this回答。

关于java - LIBGDX 字体在不同平台上的不同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com