ImageLayer에서 Pointer.Listener 및 Mouse.Listener를 사용했으며 작동했습니다. 그러나 Pointer.Listener를 GroupLayer에 사용하면 클릭 또는 터치를 수신하지 않습니다. 어떻게해야합니까?playn의 GroupLayer에 리스너를 추가하는 방법은 무엇입니까?
다음 코드를 사용하고 있습니다.
ImageLayer에서 Pointer.Listener 및 Mouse.Listener를 사용했으며 작동했습니다. 그러나 Pointer.Listener를 GroupLayer에 사용하면 클릭 또는 터치를 수신하지 않습니다. 어떻게해야합니까?playn의 GroupLayer에 리스너를 추가하는 방법은 무엇입니까?
다음 코드를 사용하고 있습니다.
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가 모든 하위 테스트를 치게되고 해당 하위 노드가 모두 맞으면 그 자체 인을 적중 레이어로 반환합니다. 그런 다음 그룹 레이어에 등록 된 리스너는 그룹 레이어 자체가 클릭 된 것처럼 실행됩니다.
'setHitTester'가 작동하지 않아 로그를 추가했고 마우스 커서를 가리킬 때마다 loggin'hitlayer = null'을 유지했습니다. 'Point p'를 디버그하고 올바른 좌표를 보여줍니다). –
좋아요. 디버깅을 한 후 아이 레이어를 인터랙티브로 설정해야한다는 것을 알았습니다. –
Listener를 GroupLayer에 연결할 수없는 경우 포인터 대신 Listener를 설정 한 다음 포인터 이벤트 위치와 GroupLayer 간의 충돌 조건에서 이벤트를 트리거하는 방법도 있습니다. 개념의 예는 다음에서 찾을 수 있습니다 : [PlaynDev.java] (http://code.google.com/p/klenwell/source/browse/trunk/projects/java/playndev/playndev/core/src/main/java /com/googlecode/klenwell/playndev/core/PlaynDev.java#55) – klenwell