2013-02-28 2 views
1

내가 터치가 내 계층에서 가능하게 설정하고있다. 내가 그것을 해제하려고하는 경우 : ...해제 ccTouche

내가 어떻게이 동일한 구문 다시 활성화하면

[[[CCDirector sharedDirector]touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO]; 

은,하지만 난 대리인이 이미 추가 된 충돌을 확인 얻을의 하나는 동적으로 터치를 비활성화하고 활성화 할 수 있습니까?

감사합니다.

+0

self.isTouchesEnabled = NO; 어떤 CCNode 하위 클래스가 작동하지 않는 이상한 경우 – iiFreeman

+0

플래그를 추가하고 처리하지 않으려는 경우 무시하십시오. – iiFreeman

답변

0

실제로 CCLayer 객체 인 경우 isTouchEnabled를 사용하십시오. CCLayer 객체는 그에 따라 대상 터치 위임을 추가/제거합니다. 그래서 전체적인 질문은 '당신이 무엇을 의미합니까'는 효과가 없다는 것입니다. 예를 들어, 레이어가 (터치가 비활성화 된 상태에서) 메뉴가 포함되어있는 경우에도 메뉴는 계속 활성화되어 터치 우선 순위가 매우 높습니다. 즉, 터치에 반응하는 레이어가 아니라 포함 된 메뉴입니다. CCLayer의 코드에서

직선 (버전 2.0) : 당신이 볼 수있는

-(void) setIsTouchEnabled:(BOOL)enabled 
{ 
    if(isTouchEnabled_ != enabled) { 
     isTouchEnabled_ = enabled; 
     if(isRunning_) { 
      if(enabled) 
       [self registerWithTouchDispatcher]; 
      else { 
       CCDirector *director = [CCDirector sharedDirector]; 
       [[director touchDispatcher] removeDelegate:self]; 
      } 
     } 
    } 
} 

-(void) registerWithTouchDispatcher 
{ 
    CCDirector *director = [CCDirector sharedDirector]; 
    [[director touchDispatcher] addStandardDelegate:self priority:0]; 
} 

는 기본 CCLayer 코드는 이미 당신이 손으로 일을하려고하는 것을 구현합니다. 그냥 속성을 사용하십시오.

+0

터치에 대한 응답은 cctouch가 호출됨을 의미합니다. 네, 거기에 메뉴와 ccscroller가 있습니다.하지만 cctouch 함수의 터치에 대한 응답을 볼 필요가 없습니다. (??) – bilanbila

0

터치 감지기와 self.istouchenabled는 터치를 감지하는 두 가지 방법입니다. 나는 지금 컴퓨터가 아니기 때문에 정확한 코드를 기억할 수 없다. 나는 국제선 항공편에 탑승 할 것입니다. 하루 정도 기다리 시려는 경우 cctouch 디스패처를 제거하는 올바른 방법으로이를 업데이트하겠습니다. 기다리지 않으려면 cocos2d 문서를 확인하는 것이 좋습니다. 나는 당신이 거기에있는 것을 보여줄 것이라고 확신한다.

+0

그들은 하나이며 동일합니다. 위 참조. – YvesLeBorg