gpt4 book ai didi

java - Libgdx Scene2D 表背景图像未显示

转载 作者:行者123 更新时间:2023-12-01 09:46:33 26 4
gpt4 key购买 nike

我正在使用 Libgdx 的 Scene2D API 通过 UI 进行构建,到目前为止一切都按预期工作。我创建了一个 Skin 和一个 TextureAtlas 并将它们链接如下:

Skin skin = new Skin();
TextureAtlas uiElements1 = new TextureAtlas("skins/uielements1.txt");
skin.addRegions(uiElements1);
skin.load(Gdx.files.internal("skins/uiskin.json"));

然后我尝试创建一个:

Table table = new Table(skin);
table.setWidth(stage.getWidth());
table.align(Align.center|Align.top);
table.setPosition(0, Gdx.graphics.getHeight());
table.padTop(30);
table.setBackground("grey_button02");

最后,我向 Table 添加了一个 Label:

Label gameTitle = new Label("Nameless Project", skin, "title");
table.add(gameTitle).padBottom(10).row();

Table 添加到我的Stage 后,只有其中的元素才会显示,而不会显示背景图像。我尝试使用 background(String s)setBackground(String s)background(Drawable d)setBackground(Drawable d) )。这 4 种方法似乎都不适合我。

我还尝试调用 pack()setFillParent(true) 但这两个方法都使我的表格消失了。我几乎浏览了所有 Google 搜索结果,但找不到其他人也遇到过我的问题。

编辑

这是我的 uiskin.json 文件

{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: fonts/FutureThin.fnt } },
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: { down: blue_button03, up: blue_button04, font: default-font },
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: {
titleFont: default-font
}
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
title: {
font: default-font
}
}
}

整个类渲染舞台:

public class MainMenu implements Screen {

GameClass myGame;

Stage stage;
Skin skin;

Table table;
TextButton singlePlayer;
TextButton multiPlayer;
Label gameTitle;


public MainMenu(GameClass g) {
myGame = g;

// Create Skin, load texture Atlas, load skin
skin = new Skin();
TextureAtlas uiElements1 = new TextureAtlas("skins/uielements1.txt");
skin.addRegions(uiElements1);
skin.load(Gdx.files.internal("skins/uiskin.json"));

// Create stage
stage = new Stage(new ScreenViewport());

// Create Table
table = new Table(skin);
table.setWidth(stage.getWidth());
table.align(Align.center|Align.top);
table.setPosition(0, Gdx.graphics.getHeight());
table.padTop(30);
table.setBackground("grey_button02");

// Game Title
gameTitle = new Label("Nameless Project", skin, "title");
table.add(gameTitle).padBottom(30).row();

// Single Player button
singlePlayer = new TextButton("Single Player", skin, "default");
singlePlayer.addListener(new ClickListener() {
@Override
public void clicked(InputEvent e, float x, float y) {
myGame.setScreen(new WorldTesting(myGame));
}
});
table.add(singlePlayer).width(300).padBottom(30).row();

// Multiplayer Button
multiPlayer = new TextButton("Multiplayer", skin, "default");
multiPlayer.setWidth(350);
multiPlayer.addListener(new ClickListener() {
@Override
public void clicked(InputEvent e, float x, float y) {
// Change Scenes
}
});
table.add(multiPlayer).width(300).padBottom(30).row();

stage.addActor(table);
Gdx.input.setInputProcessor(stage);
}

public void show() {

}

public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}

public void hide(){

}
public void resize(int x, int y) {

}
public void pause() {

}
public void resume() {

}
public void dispose() {

}

}

最佳答案

终于找到解决办法了。您需要在背景显示之前调用table.pack()。我正在调用 table.pack() ,但将表格放置在 Pack 之后的屏幕外,因此我认为 pack() 使其消失。

关于java - Libgdx Scene2D 表背景图像未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957746/

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