2014-07-20 2 views
0

나는 Cocos2d 3.1에서 아주 간단한 것을하려고 노력하고있다. CCSprite 하위 클래스에서 터치 이벤트를 받고 있는데 터치가 단순한 containsTouchLocation 도우미 메서드를 사용하여 스프라이트에서 벗어난 경우 터치 이벤트 수신을 중단하려고합니다.touchMoved cocos2d v3을 터치하지 않으시겠습니까?

그러나 작동하지 않는 것은 touchMoved: 메서드에서 self.userInteractionEnabled = NO;을 수행하면 여전히 touchMoved!가 호출됩니다.

이 내 전체 touchMoved입니다 : 방법 : 왜 내가 분명히 touchMoved 방법에 터치 이벤트를 해제하려고해도, 그것은 여전히 ​​호출되는

- (void)touchMoved:(UITouch *)touch withEvent:(UIEvent *)event { 
    self.userInteractionEnabled = NO; 
    int color = ([self containsTouchLocation:touch] ? 128 : 255); 
    self.color = [CCColor colorWithCcColor3b:ccc3(color, color, color)]; 
} 

입니까?

+0

현재 터치가 현재 터치에만 영향을 미칩니 까? 즉, 현재 터치가 이동 및 종료 이벤트를 수신 할 수있는 동안 향후 터치해도 비활성화됩니다. – LearnCocos2D

+0

@ LearnCocos2D 예, 미래의 모든 접촉을 중지합니다. 현재의 터치를 어떻게 멈출 수 있습니까? –

+0

내가 조사한 바에 따르면 이렇게 할 방법이 없습니다. 그래서 그 동안 나는 BOOL을 사용했고 필요할 때 코드를 호출하지 않을 것입니다. 아직 작동중인 터치에 대해 터치 이벤트를 중지 할 수있는 방법이 있는지 알고 있습니까? –

답변

0

활성 터치에서 userInteractionEnabled 비활성화는 현재 버전의 Cocos2D에서 터치를 취소하지 않습니다. 나는 userInteractionEnabled은 당신이 당신의 노드 상태 변수의 일종으로 그 처리해야합니다 지금 YES (https://github.com/cocos2d/cocos2d-iphone/pull/882)

로 설정되어있는 동안 내 의견 노드 만 터치 이벤트를 수신해야하기 때문에, 그것을 변경하는 풀 요청을 만들었습니다 그 접촉을 받는다.

+0

감사! 나는 양측이 정직하다는 것을 알 수 있지만 당신의 커밋은 잘 작동합니다. –

+0

네, 양면도 볼 수 있습니다;) –