如何在playn中将侦听器添加到GroupLayer?

Roc*_*ins 0 java gwt listener playn

我在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) { }
});
Run Code Online (Sandbox Code Playgroud)

sam*_*ert 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;
  }
});
Run Code Online (Sandbox Code Playgroud)

这将导致GroupLayer对其所有子节点进行测试,如果有任何子节点被击中,它将自己返回到命中图层.然后,将在组图层上注册的侦听器运行,就像单击组图层一样.