libgdx中ImageTextButton的闪烁
我正在使用他们的Scene2d.ui包在libgdx中创建一个存储阶段。我在舞台上看到一些较大版本的按钮出现在较小的按钮后面时,这种奇怪的闪烁现象: 较大的背景按钮忽亮忽灭,而前面的按钮则完全正常。背景的是不可点击的,但是前面的是——同样,它们看起来完全正常 以下是相关代码:libgdx中ImageTextButton的闪烁,libgdx,scene2d,Libgdx,Scene2d,我正在使用他们的Scene2d.ui包在libgdx中创建一个存储阶段。我在舞台上看到一些较大版本的按钮出现在较小的按钮后面时,这种奇怪的闪烁现象: 较大的背景按钮忽亮忽灭,而前面的按钮则完全正常。背景的是不可点击的,但是前面的是——同样,它们看起来完全正常 以下是相关代码: private void init(Skin skin) { this.skin = skin; boyTexture = new Texture(Gdx.files.internal("images/ch
private void init(Skin skin) {
this.skin = skin;
boyTexture = new Texture(Gdx.files.internal("images/character.png"));
catTexture = new Texture(Gdx.files.internal("images/character_cat_girl.png"));
hornTexture = new Texture(Gdx.files.internal("images/character_horn_girl.png"));
pinkTexture = new Texture(Gdx.files.internal("images/character_pink_girl.png"));
queenTexture = new Texture(Gdx.files.internal("images/character_queen_girl.png"));
// set root table
table = new Table();
table.setFillParent(true);
addActor(table);
table.add(new Label("Characters: ", skin, "default")).padLeft(10).colspan(2);
table.row();
ButtonGroup characterGroup = new ButtonGroup();
characterGroup.setMaxCheckCount(1);
Button boyButton = createImageTextButton("Plain Boy", boyTexture);
table.add(boyButton);
Button catButton = createImageTextButton("Cat Girl", catTexture);
table.add(catButton);
table.row();
Button hornButton = createImageTextButton("Horn Girl", hornTexture);
table.add(hornButton);
Button pinkButton = createImageTextButton("Pink Girl", pinkTexture);
table.add(pinkButton);
table.row();
Button queenButton = createImageTextButton("Queen", queenTexture);
table.add(queenButton).colspan(2);
//addAction(Actions.sequence(Actions.alpha(1f), Actions.fadeIn(1)));
}
private Button createImageTextButton(String label, Texture texture) {
ImageTextButton button = new ImageTextButton(label, skin, "default");
button.getImage().setDrawable(new SpriteDrawable(new Sprite(texture)));
return button;
}
起初我以为这和转换动作有关,但正如你们所看到的,我已经把它们注释掉了,现在仍然在发生
我还认为只有ImageTextButton有问题,但我更改了我的createImageTextButton
方法以返回一个普通的TextButton
。这仍然有闪烁,但按钮没有在背景中放大-它们似乎在侧面闪烁,但与前景按钮的大小大致相同
以下是以下评论中要求的施工人员:
public Store(Skin skin) {
super();
init(skin);
}
public Store(Viewport viewport, Skin skin) {
super(viewport);
init(skin);
}
public Store(Viewport viewport, Batch batch, Skin skin) {
super(viewport, batch);
init(skin);
}
我在MainGame类中创建阶段时使用了最后一个
public class MainGame extends ApplicationAdapter {
public static final int MIN_WIDTH = 480;
public static final int MIN_HEIGHT = 800;
public static SpriteBatch batch;
public static GameStage game;
public static Store store;
public static Skin skin;
public static Viewport viewport;
public static Stage stage;
@Override
public void create() {
viewport = new ExtendViewport(MIN_WIDTH, MIN_HEIGHT);
batch = new SpriteBatch();
initSkin();
game = new GameStage(viewport, batch, skin);
store = new Store(viewport, batch, skin);
setStage(game);
}
...
@Override
public void render() {
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@Override
public void resize(int width, int height) {
viewport.update(width, height, true);
}
...
public static void setStage(Stage stage) {
MainGame.stage = stage;
Gdx.input.setInputProcessor(stage);
}
}
你能给我们展示一下
render()
方法吗?在何处/何时调用init()
方法?我没有重写render()方法,所以它只是默认的Stage.render()方法。在构造函数中调用init方法。我将在上面添加构造函数。在render()
中调用stage.draw()
,其中stage
应该是游戏
对吗?你在哪里调用store.stage.draw()
?store扩展了stage,所以我在MainGame中交换了stage
变量。渲染方法只调用当前阶段的draw
。很难说是什么问题,显示的代码似乎没问题,我想问题出在其他地方。。。你试过调试你的代码吗?在render()
中设置一个断点,然后查看Stage
、视口
等。