サブクラス化された CCNode があり、そこに同じ小さなサブクラス化された CCSprite がいくつか追加され、サブクラス化されたスプライトの子がいくつかあります。私は CCSpriteBatchNode を適切に使用していると思っていましたが、何百もの描画呼び出しが登録されていることに気付き、これは 1 つだけであるべきだと思いました。
私の CCNode サブクラスはこの子を追加します:
Segment* segment = [Segment segmentWithState:kState];
[self addChild:segment];
セグメントは、次の CCSprite のサブクラスです。
+(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;
次に、このセグメント サブクラスは、同じコードを持つサブクラス サブセグメントの子を取得します。
+(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;
1 つのバッチ ノードを CCNodeSUbclass に追加してから、セグメントのインスタンスを子として batchnode に追加しようとしましたが、これはエラーをスローします。また、CCNodesubclass バッチノードに子 (サブセグメント) を追加する方法もわかりません。
ちなみに、これで明らかになったインスタンスメソッドコードではなくクラスの使用は臭いですか?