A と B の 2 つのクラスがあります。A にクラス B のオブジェクトを作成します。
B *objectB = [B classInitWithParamiters:paramiters];
[self addChile:objecTB z:1 tag:varForTag];
varForTag++;
このコードを何度も呼び出します。
これは Bh ファイルです:
@interface Chicken : CCSprite <CCTargetedTouchDelegate> {
CCsprite *spriteB;
}
+ (id) classInitWithParamiters :(int) paramiters;
これは Bm ファイルです:
+ (id) classInitWithParamiters :(int) paramiters
{
return [[[self alloc] init] autorelease];
}
- (id) init
{
if( (self = [super init]) ) {
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];
spriteB = [[CCSprite alloc] initWithFile:@"image.png"];
spriteB.position = ccp(160, 240);
[self addChild:spriteB];
}
return self;
}
- (void) update :(ccTime)dt
{
NSLog(@"This is a Class B");
}
- (void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint location = [[CCDirector sharedDirector] convertToGL:[touch locationInView:[touch view]]];
if(CGrectContainsPoint([spriteB boundingbox], location))
NSLog(@"touch moved in the class B");
}
私の問題は、AシーンをクラスCのシーンに置き換えると、クラスBのメソッド更新がログを停止しますが、画面の中央をタッチして指を動かすと、「クラスBでタッチが移動しました」とログに記録されます.
私が間違っていることは何ですか?クラス B のこれらのオブジェクトは、シーンの置き換え後に自動的に解放されるべきではありません。クラス B は CCSprite と A - CCLayer のサブクラスです。