我正在学习libgdx,但卡在一个地方。
我在我的舞台中添加了一个按钮,现在我想在舞台中添加一张图片,使得这张图片成为该按钮的背景图片,也就是说按钮应该位于图片之上。
我一直在看教程,但还没有做到。
怎样才能实现?有什么帮助吗?
我正在学习libgdx,但卡在一个地方。
我在我的舞台中添加了一个按钮,现在我想在舞台中添加一张图片,使得这张图片成为该按钮的背景图片,也就是说按钮应该位于图片之上。
我一直在看教程,但还没有做到。
怎样才能实现?有什么帮助吗?
Actor
的子类Image
添加到Stage
,并使用z-index
确保其作为背景绘制。
- 您可以获取Stage
的SpriteBatch
(stage.getBatch()
),并使用其中一个draw
方法来绘制背景,然后调用stage.draw()
。SpriteBatch
,但我不建议这样做,因为它是一个相当“沉重”的对象,在这种情况下并不必要。在调用stage.draw()
之前,您需要调用用于绘制背景的SpriteBatch
的end()
方法。一个小例子:
stage.act(Gdx.graphics.getDeltaTime());
stage.getBatch().begin();
stage.getBatch().draw(background, 0, 0, WORLD_WIDTH, WORLD_HEIGHT);
stage.getBatch().end();
stage.draw();
这是我用来模拟健康条的一些代码。我使用了一个 ProgressBar
。
stage = new Stage();
Texture bground = new Texture(Gdx.files.internal("pbBackground.png"));
Table table = new Table();
table.setFillParent(true);
stage.addActor(table);
font = new BitmapFont(Gdx.files.internal("gamefonts.fnt"));
font.getData().scale(.1f);
skin = new Skin();
pixmap = new Pixmap(1, 1, Format.RGBA8888);
pixmap.setColor(Color.WHITE);
pixmap.fill();
skin.add("white", new Texture(pixmap));
LabelStyle lstyle = new LabelStyle();
lstyle.font=font;
Label mylabel = new Label("HP", lstyle);
mylabel.setColor(Color.RED);
mylabel.setPosition(1, 6);
table.addActor(mylabel);
textureBar = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("pb.png"))));
barStyle = new ProgressBarStyle(skin.newDrawable("white", Color.DARK_GRAY), textureBar);
barStyle.background = new TextureRegionDrawable(new TextureRegion(bground));
barStyle.knobBefore=barStyle.knob;
bar = new ProgressBar(0, 10, 0.5f, false, barStyle);
bar.setPosition(1, 1);
bar.setValue(0);
bar.setAnimateDuration(2);
table.addActor(bar);
这个网站可能会帮助你更好地理解进度条。同时,也可以查看ProgressBar的文档。