如何在libgdx场景2d中检查Tree是否被击中



基本上,如果用户没有点击树,我只想清除对树的选择。我当前的代码是:

    entityTree.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (entityTree.getNodeAt(y) == null) {
                entityTree.getSelection().clear();
            }
        }
    });

但它不起作用有两个原因:

  1. 只有在实际单击了树时才会调用clicked。如果单击某个按钮或其他任何位置,则树不会得到单击事件
  2. 当前代码只检查y分量。它应该与检查是否达到树边界的代码相结合
    tree.getStage().addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            if (tree.getStage().hit(x, y, true) != tree || tree.getNodeAt(y) == null)
                tree.getSelection().clear();
            return false;
        }
    });

最新更新