나는이 같은 CCLayer를 정의한 .H 파일에 cclayer을 정의내에서
@interface MyLayer : CCLayer {
CCLayer * referenceLayer;
}
가 어떻게 그것을 + (CCScene *) 현장에서 사용하기 위해 선언해야?
좋아요? + (id)scene
이후
@property (nonatomic, retain) CCLayer *referenceLayer;
나는이 같은 CCLayer를 정의한 .H 파일에 cclayer을 정의내에서
@interface MyLayer : CCLayer {
CCLayer * referenceLayer;
}
가 어떻게 그것을 + (CCScene *) 현장에서 사용하기 위해 선언해야?
좋아요? + (id)scene
이후
@property (nonatomic, retain) CCLayer *referenceLayer;
클래스 방법입니다, 당신은 그것을 내에서 바르/속성을 액세스 할 수 없습니다. 한 가지 가능한 해결 방법은 다음 코드에서와 같이, 당신의 layer.m 파일에 정적 변수를 가지고있다 :
static CCScene* _scene = nil;
+ (id)scene {
if (_scene == nil) {
_scene = [[CCScene node] retain];
//-- further scene initializaion
}
return _scene;
}
이 간단한 방법은 단점이있다 : 당신은 단지 주변에 하나 개의 레이어를 가질 수 있습니다.
어떨까요 [이 예제] (http://stackoverflow.com/questions/9076699/accessing-an-object-from-class-type-method-in-iphone-cocos2d)? –
도 작동 할 것이고 단지'+ (id) scene :(CCLayer *) l' 대신'+ (id) scene'을 정의하면됩니다. 이 경우 미리 레이어를'alloc-init'해야하고'scene'은 팩토리 메소드로 사용할 수 없습니다. – sergio
답변을 업데이트 할 수 있습니까? 사실'referenceLayer'에 자식으로'bLayer'를 추가하려고합니다. 그게 가능하다고 생각하니? –
- (id) init 메소드에서 수행 할 수 있도록 코드를 다시 작성하는 것이 좋습니다. – LearnCocos2D
@ LearnCocos2D : 미안하지만 당신이 의미하는 바를 얻지 못했습니다. 내가 달성하고자하는 것은 다른 레이어에서 일부 스프라이트를 얻는 것입니다. "CCSprite * sprite = (CCSprite *) [referenceLayer getChildByTag : kTagNumber];가 아닌 어떤 가능성을 알고 있습니까? –