2013-03-31 2 views
1

두 클레이클러가 있습니다. 최상위 cclayer에는 여러 객체 (ccnode에서 파생 됨)가 있으며 멀티 터치를 사용할 수 있습니다. 나는 cctouchesbegan을 사용하여 이러한 객체에 대한 접촉을 감지합니다. 모든 것이 잘 작동합니다.2 스택 터치 가능 CCLayers

하지만 최상위 cclayer 아래에는 다른 멀티 터치 가능 cclayer가 필요합니다. 그래서 객체가 맨 위의 cclayer에서 다루어지지 않을 때마다 맨 아래의 cclayer가 터치에 반응하기를 바랍니다. 하단 cclayer는 기본적으로 단색 배경이며 만졌을 때 반응하기를 원합니다. 바로 지금 두 cclayers가 동시에 반응합니다.

터치 만하면 터치 디스패처로 해결하고 우선 순위를 설정하는 것이 쉽다는 것을 알고 있습니다. 하지만 두 cclayers가 멀티 터치를 지원하는 것이 중요하기 때문에 저는 막혔습니다.

거기에 어떤 해결책이 있습니까?

+0

은 멀티 터치가 최상위 레이어에 '필수'입니까? 즉, 최상위 레이어에 포함 된 여러 객체를 동시에 감지하고 추적 할 수있는 가능성을 원하십니까? – YvesLeBorg

답변

1

여러 번 터치 : 최상위 레이어에서만 터치 입력이 가능합니다. 최상위 레이어가 레이어의 스프라이트 중 하나에서 터치가 시작되지 않았다고 판단하면 맨 아래 레이어에서 동일한 ccTouchesBegan 메서드를 호출합니다. 특정 터치의 다음 이벤트 (이동, 종료 됨) 모두 동일합니다.

단일 터치 : 레이어가 터치를 처리하고 다른 레이어도 해당 터치를 처리하지 않을 때마다 ccTouchBegan에서 YES를 반환합니다.

+1

ccTouchesBegan은 (void)를 반환하는 메서드입니다. 그것이 내가 생각하는 문제의 요점이다. 나는 어떤 방법이라도 발견 할 수 없다. 최상위 레이어가 (표준 대신) 타겟팅되면 제안이 적용됩니다. – YvesLeBorg

+0

아, 그럴 경우 잘 대답 해주세요;) – LearnCocos2D

+0

@ YvesLeBorg는 (Bool) ccTouchBegan에 touchDispatcher를 사용합니다. –