假设我们有下一个演员的场景:
现在看看下一步:
在我看来,它看起来很不对劲。当然TouchListener有cancel()方法,我们可以只调用它来修复它,但如果root由十几个可触摸的actor组成,那该怎么办...
那么,我是否错过了一些东西或者什么是禁用整组触摸的正确方法?
答案 0 :(得分:1)
在此讨论后https://github.com/libgdx/libgdx/issues/2789
现在可能最好的解决方案是编写实用程序方法,取消整个组层次结构的触摸焦点。像这样:
public static void cancelTouchFocus(Stage stage, Actor actor) {
stage.cancelTouchFocus(actor);
if (actor instanceof Group) {
SnapshotArray<Actor> children = ((Group)actor).getChildren();
if (children.size > 0) {
Object[] snapshot = children.begin();
for (int i = 0; i < children.size; i++) {
cancelTouchFocus(stage, (Actor)snapshot[i]);
}
children.end();
}
}
}
当然你可以调用Stage#cancelTouchFocus(Actor actor)
,但在这种情况下,你可能会破坏这个特定组之外的其他一些演员的活跃触摸周期。
检查上面提到的github问题以获取其他解决方案和想法。