libgdx中的表中的setVisible不起作用?

时间:2014-02-24 09:29:34

标签: java user-interface libgdx

我有以下问题:

我正在尝试使用表格布局在libgdx中实现带子菜单的菜单。单击子菜单时,将触发一个侦听器,该侦听器应设置上一个菜单的可见(false),并设置为新的setVisible(true)。但是,虽然我成功地展示了新的,但前一个仍然在这里!有人能帮助我吗?

这是我的代码:

Menu.java:

public class Menu extends Table {
  private Stage stage;

  public void attachToStage(Stage s) {
    if (s != null) {
      stage = s;
      s.addActor(this);
    }
  }

  public Menu() {
    this(null);
  }

  public Menu(final Stage s) {
    attachToStage(s);
    setFillParent(true);
    top();
    left();
  }

  private void addButtonWithListener(String label, ClickListener listener) {
    add().width(10);
    Label l = new Label(label, SkinManager.get());
    add(l).width(100);
    row();
    if (listener != null)
      l.addListener(listener);
  }

  /**
   * @param label
   * @return The menu, for chaining
   */
  public Menu addButton(String label) {
    addButtonWithListener(label, null);
    return this;
  }

  /**
   * 
   * @param label
   * @param m
   *          the menu to add
   * @return The main menu, for chaining
   */
  public Menu addMenu(String label, final Menu m) {
    addButtonWithListener(label, new ClickListener() {
      @Override public void clicked(InputEvent e, float x, float y) {
        System.out.println(getChildren());
        setVisible(false);
        m.setVisible(true);
      }
    });
    m.attachToStage(stage);
    m.setVisible(false);
    return this;
  }
}

我的申请:

public class TestApplication implements ApplicationListener {
  private Stage stage;

  @Override public void create() {
    stage = new Stage();
    Menu m = new Menu(stage).addButton("Move").addButton("Stay");
    m.addMenu("Attack", new Menu().addButton("Sword").addButton("Bow"));
    Gdx.input.setInputProcessor(stage);
  }

  @Override public void render() {
    stage.draw();
  }
   // Other empty methods
}

非常感谢!

编辑:问题无关,请参阅我的回答

1 个答案:

答案 0 :(得分:0)

好的,发现问题:与表格完全无关,只是忘了清除应用程序中的屏幕。

我刚刚添加了

Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

在渲染功能中。