如何添加背景图片到我的菜单?
问题描述:
我目前正在libgdx中制作一些带背景图片的菜单。我尝试添加图像作为演员,但然后按钮没有响应touchDown事件。所以我现在试着在render()方法中用spriteBatch绘制背景图像,然后在show()方法中绘制表格和按钮,但现在它只显示图像,根本没有按钮。这是代码:如何添加背景图片到我的菜单?
public void show()
{
// load the texture with our image
backgroundTexture = new Texture("fonfopiz.png");
// set the linear texture filter to improve the image stretching
backgroundTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Here we create a region of our texture whose size is 512x301
backgroundTextureRegion = new TextureRegion(backgroundTexture, 0, 0, 512, 301);
// TODO Auto-generated constructor stub
crearTablaBack();
//the general table
table = super.getTable();
//table.setFillParent(false);
Label vacia = new Label("",getSkin());
table.add(vacia).spaceBottom(45);
table.row();
Label lTit;
try {
lTit = new Label(res.getString(titulo), getSkin(), "titulos");
table.add(lTit).spaceBottom(10).spaceLeft(50);
//stage.addActor(lTit);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
table.row();
Label lText = new Label(res.getString(titulo + "_TXT"),getSkin());
lText.setWrap(true);
table.add(lText).width(375).spaceBottom(55);
//lText.setAlignment(100);
//lText.setWidth(200);
table.row();
table.setPosition(110, 0);
//table.setSize(200, 200);
}
public void render(
float delta)
{
super.render(delta);
batch = super.getBatch();
// we use the SpriteBatch to draw 2D textures (it is defined in our base
// class: AbstractScreen)
batch.begin();
// we tell the batch to draw the region starting at (0,0) of the
// lower-left corner with the size of the screen
batch.draw(backgroundTextureRegion, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// the end method does the drawing
batch.end();
}
private void crearTablaBack() {
//the table for the back button
Table tabla = new Table(getSkin());
tabla.debug();
//table.debugTable();
stage.addActor(tabla);
tabla.setPosition(40, 35);
TextButton botonBack = new TextButton("<<", getSkin());
tabla.add(botonBack).size(60, 40).spaceBottom(20);
tabla.row();
botonBack.addListener(new InputListener() {
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
//super.touchUp(event, x, y, pointer, button);
System.out.println("back");
//game.setScreen(new ExperimentosScreen(game));
//game.setScreen(new PruebaScreen(game));
return true;
}
});
}
答
不要有太多的想法有关scene2d在libgdx但是从你的代码可能是,如果()方法写在显示的代码render()方法,绘制背景后,那么它可能工作。我得到的是你正在绘制表格和按钮,然后在它上面绘制背景,所以所有的东西都被你的背景隐藏起来。 还有一件事Show方法将被调用一次(第一次创建方法你的屏幕类),并且渲染方法将在你的课程生命中多次调用。我深深地阅读了你的代码,但是你有没有在任何地方调用stage.draw()或stage.act()?
好的,在我的代码中转身后,我意识到我之前使用的代码(将背景添加为演员)其okey,但我忘记调用我的超类show()。 – 2013-04-12 18:13:23