2012-02-02 3 views
0

나는이 같은 CCLayer를 정의한 .H 파일에 cclayer을 정의내에서

@interface MyLayer : CCLayer { 
    CCLayer * referenceLayer; 
} 

가 어떻게 그것을 + (CCScene *) 현장에서 사용하기 위해 선언해야?

좋아요? + (id)scene 이후

@property (nonatomic, retain) CCLayer *referenceLayer; 
+0

- (id) init 메소드에서 수행 할 수 있도록 코드를 다시 작성하는 것이 좋습니다. – LearnCocos2D

+0

@ LearnCocos2D : 미안하지만 당신이 의미하는 바를 얻지 못했습니다. 내가 달성하고자하는 것은 다른 레이어에서 일부 스프라이트를 얻는 것입니다. "CCSprite * sprite = (CCSprite *) [referenceLayer getChildByTag : kTagNumber];가 아닌 어떤 가능성을 알고 있습니까? –

답변

0

클래스 방법입니다, 당신은 그것을 내에서 바르/속성을 액세스 할 수 없습니다. 한 가지 가능한 해결 방법은 다음 코드에서와 같이, 당신의 layer.m 파일에 정적 변수를 가지고있다 :

static CCScene* _scene = nil; 

+ (id)scene { 
    if (_scene == nil) { 
     _scene = [[CCScene node] retain]; 
     //-- further scene initializaion 
    } 
    return _scene; 
} 

이 간단한 방법은 단점이있다 : 당신은 단지 주변에 하나 개의 레이어를 가질 수 있습니다.

+0

어떨까요 [이 예제] (http://stackoverflow.com/questions/9076699/accessing-an-object-from-class-type-method-in-iphone-cocos2d)? –

+0

도 작동 할 것이고 단지'+ (id) scene :(CCLayer *) l' 대신'+ (id) scene'을 정의하면됩니다. 이 경우 미리 레이어를'alloc-init'해야하고'scene'은 팩토리 메소드로 사용할 수 없습니다. – sergio

+0

답변을 업데이트 할 수 있습니까? 사실'referenceLayer'에 자식으로'bLayer'를 추가하려고합니다. 그게 가능하다고 생각하니? –