저는 서브 클래스 화 된 CCNode를 가지고 있습니다. 여기에 몇 개의 서브 클래 싱 된 스프라이트 자식이있는 동일한 작은 서브 클래 싱 된 CCSprite가 몇 개 추가됩니다. 나는 CCSpriteBatchNode를 적절히 사용하고 있다고 생각했지만, 수백 건의 무승부 콜이 등록되고 있다는 것을 알았고 이것이 단지 하나 일 것이라고 생각했다.CCSprite를 서브 클래 싱하고 CCSpriteBatchNode를 사용합니다.
+(id) segmentWithState:(SegmentState)segmentState { return [[self alloc] initWithState:segmentState];}
-(id) initWithState:(SegmentState)theSegmentState {
segmentSpriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"txt.png"];
[self addChild:segmentSpriteBatch];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"txt.plist"];
self = [super initWithSpriteFrameName:theSegmentStateFrameName];
if (self){
Subsegment * subsegment = [Subsegment subsegmentWithState:kInvisible];
}
return self;
그런 다음이 세그먼트의 서브 클래스가 동일한 코드를 가지고있는 서브 클래스 서브 세그먼트의 아이를 가져옵니다
Segment* segment = [Segment segmentWithState:kState];
[self addChild:segment];
세그먼트가와 CCSprite의 서브 클래스는 다음과 같습니다
내 CCNode의 서브 클래스는이 아이를 추가합니다 :
+(id) subsegmentWithState:(SubsegmentState)subegmentState { return... ]
-(id) initWithState:(SubsegmentState)theSubsegmentState {
subegmentSpriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"txt.png"];
[self addChild:subegmentSpriteBatch];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"txt.plist"];
self = [super initWithSpriteFrameName:theSubegmentStateFrameName];
if (self){
}
return self;
하나의 배치 노드를 CCNodeSUbclass에 추가하려고 시도했습니다. 그런 다음 세그먼트의 인스턴스를 batchnode의 자식으로 추가하지만 오류가 발생합니다. 나는 또한 내가 CCNodesubclass batchnode 자식 (하위 세그먼트)을 추가하는 방법을 잘 모르겠다.
덧붙여 말하면, 이것과 함께 사용되는 인스턴스 메소드 코드 냄새보다는 클래스를 사용하는 것입니까?
감사합니다. 나는 실제로 ccspritebatchnode 속성을 사용하여 그것을 시도하고 세그먼트 및 하위 세그먼트에 대한 batchnode를 제거하고 부모 세그먼트에서 batchnode에 하위 세그먼트를 추가했습니다. (어떤 이유로 batchnode에있는 스프라이트 자식이 배치 노드에 의해 그려지는 것으로 생각했습니다). 이것은 sortAllChildren을 호출 할 때 batchnode에 오류를 던졌습니다. – kidnim
실제로 이러한 방식으로 사용되는 스프라이트의 자식은 일괄 처리 노드로 이동하기 때문에 자체 batchnode를 삭제하지 않아야했습니다. 지금 일합니다. – kidnim