如何在我的菜单中添加背景图片?

时间:2013-04-11 08:37:08

标签: java android user-interface libgdx

我目前正在libgdx中使用背景图片制作某种菜单。我尝试将图像添加为actor但是按钮没有响应touchDown事件。所以我现在尝试使用spriteBatch在render()方法中绘制背景图像,然后在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;
        }

});
}

1 个答案:

答案 0 :(得分:0)

对于libgdx中的scene2d并不是很了解,但是如果show()方法的代码是用render()方法编写的,那么从你的代码中可能会有很多想法,在绘制背景后,它可能会起作用。我得到的是你正在绘制桌子和按钮,然后在它上面绘制背景,以便所有的东西都被你的背景隐藏起来。 Show方法将被调用一次(第一次为您的屏幕类创建方法),并且在您的课程期间将多次调用render方法。我已经深入阅读了你的代码,但是你在任何地方调用了stage.draw()或stage.act()吗?