2009-07-23 7 views
2

정말 죄송합니다. cocos2d 터치 감지에 대한 몇 가지 질문이있었습니다 (this 대답을 포함).하지만 그 중 일부는 작동하지 않습니다. 나는 내 자신의 질문을 묻는 대신에 내가 연결 한 대답에 대해 논평했지만, 나는 의견을 남길 수있는 충분한 담당자가 없다.화면의 아무 곳이나 터치 감지 * cocos2d에서?

사용자가 화면의 아무 곳이나 두 드리 자마자 애니메이션을 멈추고 싶습니다. 내가 레이어 파일과 cocosNode 파일에 모두 BOOLvoid, ccTouchesBegantouchesBegan을 시도했습니다

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touches Began"); 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView: [touch view]]; 
    location = [[Director sharedDirector] convertCoordinate: location]; 

    CGRect mySurface = (CGRectMake(100, 100, 320, 480)); 
    if(CGRectContainsPoint(mySurface, location)) { 
     NSLog(@"Event Handled"); 
     return kEventHandled; 
     [[Director sharedDirector] stopAnimation]; 
     } 
    return kEventIgnored; 
    NSLog(@"Event Ignored"); 

} 

, 그리고 많은 다른 것들 :

다음은 내 지금까지 코드입니다. 아무 반응이 없습니다. 로그에 아무 것도 표시되지 않으며 애니메이션은 즐거운 작은 방법으로 계속됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

가장 큰 문제는 앞에있는 return kEventHandled; 다음에 [[Director sharedDirector] stopAnimation];이 있다는 것입니다. return은 호출되는 즉시 함수를 종료하므로 아무 것도 도달하지 못합니다.

코드의 나머지 부분을 확인하기 위해 제 Mac을 사용하고 있지는 않지만 괜찮은 것처럼 보입니다. 그래서 이것이 주요 문제라고 생각합니다. NSLog(@"Touches Began");이 보이지 않으면 까지 확장되는 CocosNode에서이 작업을 수행해야합니다.

NSLog(@"This layer was touched at %@", NSStringFromCGPoint(location)); 
+0

나 ': 당신이 뭔가를 할 수 있도록

또 다른 유용한 것은 (당신이 접촉을보고있는 번), 당신은 쉽게 표시하고 CGPoint의 값을 디버깅 할 수 있습니다 NSStringFromCGPoint 기능입니다 나는 무엇을 의미하는지 안개가 난다. @interface GameLayer를해야하나요? 레이어 또는 @interface 노드 : CocosNode ? – Evelyn

+0

당신의 코드가 정확하다고 생각합니다. stopAnimation 라인을 리턴 라인 위로 이동시키고 마지막 NSLog와 동일하게 처리해야합니다. 그렇지 않으면 해당 코드에 도달하지 않습니다. 그래서 먼저 수정하십시오. –

+0

나는 그것을했고, 여전히 아무 것도하지 않았다 ... – Evelyn

관련 문제