2013-02-13 2 views
0

CCBigSprite 및 CCSmallSprite 클래스는 CCSprite에서 상속됩니다.
spr1, spr2는 이들의 인스턴스입니다.

모든 ccTouchesStart, ccTouchesMove, 두 클래스에 대한 프로토콜 CCTargetedTouchDelegate 에서 오버라이드 (override) ccTouchesEnd 방법.중복 된 ccsprites는 z 순서가 더 크지 만 터치 이벤트에 응답하지 않습니다.

문제 : 정상적인 경우 터치 이벤트가 예상대로 작동하고 모든 스프라이트 인스턴스에 적합합니다 (스프라이트가 겹칠 때까지 ).
터치 이벤트는 (CCSmallSprite * spr2)를 터치 한 경우 (CCBigSprite * spr1) 작동합니다.

여기에 중첩 문제가 있고 그림과 같은 정확한 위치 때문에


spr2를 누르면 sp1 대신 touch 이벤트가 작동합니다.

어떻게 치명적인 문제를 해결할 수 있습니까?

-(void)onEnter { 
    [super onEnter]; 
    [[[CCDirector sharedDirector]touchDispatcher]addTargetedDelegate:self 
priority:self.touchPriority swallowsTouches:YES]; 
} 

그것을 감지 않습니다

enter image description here

두 클래스

는 같은이 재정의 방법이 있나요? 또한

:
setPriority를가 anyhing을 변경 didnt한다.

수동으로 변경합니다.

[spr2 setTouchPriority : 1]; [spr1 setTouchPriority : 2]; // 낮은 우선 순위 또는 그 반대의 의미입니다. 도움이되었습니다.

이것은 cocos2d-iphone 2.0 stable 버전 문제일까요?

+0

swallowsTouches : NO 일했다. 예 (yes)이면 weird.it가 작동해야합니다. 하지만 노 ...에서 작동합니다. - (무효) onEnter { [super onEnter]; –

답변

2

그리기 순서는 터치 이벤트의 순서에 영향을주지 않습니다. 위의 이미지에서 작은 스프라이트에 탭 경우 CCTouchDispatcher가 작거나 큰 스프라이트가 첫 번째 터치 이벤트를 받을지 여부를 결정하여

만 순서 스프라이트는 자신을 등록했다.

+0

당신이 좋아하는 모든 것을 배웠습니다. 감사합니다. 감사합니다. 감사합니다. 감사합니다. –