2009-11-20 5 views
0

cocos2d에서 CocosNode의 부모 메소드를 호출하려고합니다. 응용 프로그램이 잘 작동하지만 'Object'가 'method'경고에 응답하지 않을 수 있습니다. 부모는 서브 클래 싱 된 Cocos2d 레이어이므로, 부모님을 어떻게 든 던져야한다고 생각합니다.하지만 치명적인 오류가 발생합니다.'Object'가 Cocos2d의 'method'경고에 응답하지 않을 수 있습니다.

방법은 ... 나는 다음과 같은 추가 시도했지만 성공하지 한이

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){ 
    [parent showChooser]; 
    return kEventHandled; 
} 

처럼

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){ 
    if([parent respondsToSelector:@selector(showChooser)]){ 
     [parent showChooser]; 
    } 
    return kEventHandled; 
} 

어떤 아이디어인가? 조금 더 안전 할 것인지,

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){ 
    [(YourLayerSubclass*)parent showChooser]; 
    return kEventHandled; 
} 

나 : showChooser이 서브 클래스에 정의 된 방법이라고 가정

답변

2

, 당신은 쓸 수 있어야

if(CGRectContainsPoint([newBrick boundingBox], touchedStartPoint)){ 
    if([parent isKindOfClass:[YourLayerSubclass class]]) { 
     YourLayerSubclass *subclassParent = (YourLayerSubclass*)parent; 
     [subclassParent showChooser]; 
     return kEventHandled; 
    } 
} 
+0

우수한. 감사. 내가 할 수 있다면 두 번째 옵션이 더 안전한 이유는 무엇입니까? – gargantuan

+0

당신은 명시 적으로'parent'가 그것이 있다고 가정하는 것이 아니라 당신이 기대하는 클래스의 인스턴스임을 명시 적으로 증명하고 있기 때문에. –

+0

... 가정을 잘못하면 충돌이 발생할 수 있습니다. 오토의 문장을 끝내기 위해서. ;) – LearnCocos2D

관련 문제