如何在 libgdx scene2d 中检查树是否被击中?
How to check if Tree was hit or not in libgdx scene2d?
基本上,如果用户没有点击树,我只想清除树的选择。我当前的代码是:
entityTree.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (entityTree.getNodeAt(y) == null) {
entityTree.getSelection().clear();
}
}
});
但它不起作用有两个原因:
clicked
只有在树被实际点击时才会被调用。如果点击发生在某个按钮或其他任何地方,树不会获得点击事件。
- 当前代码仅检查 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;
}
});
基本上,如果用户没有点击树,我只想清除树的选择。我当前的代码是:
entityTree.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (entityTree.getNodeAt(y) == null) {
entityTree.getSelection().clear();
}
}
});
但它不起作用有两个原因:
clicked
只有在树被实际点击时才会被调用。如果点击发生在某个按钮或其他任何地方,树不会获得点击事件。- 当前代码仅检查 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;
}
});