libgdx - 如何在舞台上添加背景图片?

时间:2014-03-20 14:54:03

标签: java android libgdx game-engine scene2d

我正在学习libgdx,但我陷入困境......

我在舞台上添加了一个按钮,现在我想在舞台上添加一个图像,使图像看起来像按钮的背景图像。我的意思是按钮应该位于图像上。 我一直在寻找教程,但却无法做到。

怎么做?任何帮助?

3 个答案:

答案 0 :(得分:13)

在绘制draw之前,您唯一需要做的就是Button背景。
有几种可行的方法可以做到这一点:
- 您可以将背景添加为Image({1}}的子类)到Actor,并使用Stage确保将其绘制为背景。
- 在致电z-index

之前,您可以获取Stage s SpriteBatch stage.getBatch())并使用其中一种draw方法绘制背景

你也可以使用另一个stage.draw(),但我不推荐它,因为它是一个非常重的"对象,在这种情况下,这不是必要的 我想,在致电SpriteBatch之前,您需要致电stage.draw(),针对您曾经spritebatch.end() SpriteBatch的背景。

答案 1 :(得分:8)

一个小例子:

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

stage.getBatch().begin();
stage.getBatch().draw(background, 0, 0, WORLD_WIDTH, WORLD_HEIGHT);
stage.getBatch().end();

stage.draw();

答案 2 :(得分:-2)

以下是我用来模仿健康栏的一些代码。我使用了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);

website可以帮助您更好地了解进度条。另请查看ProgressBar的文档。