2013-04-11 71 views
1

我目前正在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; 
     } 

}); 
} 

回答

0

不要有太多的想法有关scene2d在libgdx但是从你的代码可能是,如果()方法写在显示的代码render()方法,绘制背景后,那么它可能工作。我得到的是你正在绘制表格和按钮,然后在它上面绘制背景,所以所有的东西都被你的背景隐藏起来。 还有一件事Show方法将被调用一次(第一次创建方法你的屏幕类),并且渲染方法将在你的课程生命中多次调用。我深深地阅读了你的代码,但是你有没有在任何地方调用stage.draw()或stage.act()?

+0

好的,在我的代码中转身后,我意识到我之前使用的代码(将背景添加为演员)其okey,但我忘记调用我的超类show()。 – 2013-04-12 18:13:23