我已经将Pointer.Listener和Mouse.Listener与ImageLayer一起使用了,并且可以正常工作。但是,当我对GroupLayer使用Pointer.Listener时,它不会监听单击或触摸。我怎样才能做到这一点?
我正在使用以下代码。
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) { }
});
最佳答案
单击鼠标本身不会使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对其所有子项进行命中测试,如果任何子项被命中,它将返回自身作为命中层。然后,将运行在组层上注册的侦听器,就像单击组层本身一样。
关于java - 如何在playn中将监听器添加到GroupLayer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10632787/