1
私のアプリケーションのアンドロイド版を実行すると、ビットマップを使用して描かれたテキストが、私のアンドロイド版のアプリと比べて、デスクトップ版の別の位置に表示されます。私はすでにこの問題を見て、Projectmatrixを組み合わせる必要があることを読んだが、これは役に立たなかった。クロスプラットホームで異なる位置にテキストを表示する理由が何であるかわからない。LIBGDXフォントが異なるプラットフォームで異なる位置
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();
}
}
ビューポートを試しましたか? – Expiredmind
@Expiredmindはい、私はこれを持っています: 'this.camera = new OrthographicCamera();これはレンダリングメソッドでステージを描画します。 – Vitalynx
'Label'を使用してステージに追加できると思います。その後、 'font.draw'を削除することができます。ステージの 'viewport'は、異なる解像度をかなりうまく扱うことができます。 – Expiredmind