我在ImageLayer中使用了Pointer.Listener和Mouse.Listener并且它有效。但是当我将Pointer.Listener用于GroupLayer时,它不会监听点击或触摸。我怎样才能做到这一点?
我正在使用以下代码。
myGroupLayer.addListener(new Pointer.Listener() {
@Override
public void onPointerEnd(Event event) {
System.out.println("click registered");
myMethodToRun();
}
@Override
public void onPointerDrag(Event event) { }
@Override
public void onPointerStart(Event event) { }
});
答案 0 :(得分:5)
GroupLayer永远不会被鼠标点击“击中”。可能会击中GroupLayer的一个子节点,但这不会触发在组图层上注册的侦听器,仅触发子节点本身。
如果您的GroupLayer包含多个子节点,并且您希望在单击任何子节点时将事件调度到GroupLayer的侦听器,则必须在GroupLayer上使用自定义命中测试器:
myGroupLayer.setHitTester(new Layer.HitTester() {
public Layer hitTest(Layer l, Point p) {
Layer hitLayer = myGroupLayer.hitTestDefault(p);
return (hitLayer != null) ? myGroupLayer : null;
}
});
这会导致GroupLayer对其所有子项进行测试,如果有任何子项被击中,则会返回本身作为命中图层。然后,在组图层上注册的侦听器将像单击组图层一样运行。