我目前正在使用背景图像在 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;
}
});
}