0

私はcocos2d-iphoneの初心者です。

ゲームシーンへのaddchildに問題があります。

CCSpriteから派生した単純なクラスを作成し、このクラスを表示しようとしました。

しかし、それは機能せず、何が問題なのかわかりません。

これは私のクラスのコードです:

//myClass.h
#import "cocos2d.h"
@interface myClass:CCSprite{
}
@end

//myClass.m
#import "myClass.h"
@implementation myClass
-(id) init{
    if( self = [super initWithFile:@"title.png"] ){
        self.position = ccp(240, 240);
    }
    return self;
}
@end

これはゲームシーンの一部です:

//HelloWorldLayer.m
...
// this worked well.
// myClass* temp = [CCSprite spriteWithFile:@"title.png"];
// temp.position = ccp(240, 240);
// [self addChild:temp];

// but this won't work.
myClass* temp = [[myClass alloc] init];
[self addChild:temp];
...

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

コードを確認すると、initWithFileはinitを呼び出すinitWithTextureを呼び出すため、ループ状態になり、問題が発生します。スプライトと設定位置を作成する別のコンストラクターまたはクラスメソッドを作成してみてください。

例えば

//myClass.h
#import "cocos2d.h"
@interface myClass:CCSprite{
}
-(id)initMy;
+(id)createMySprite;
@end

//myClass.m
#import "myClass.h"
@implementation myClass
-(id) initMy{
    if( self = [super initWithFile:@"title.png"] ){
        self.position = ccp(240, 240);
    }
    return self;
}
+(id)createMySprite {
    return [[[self alloc] initMy] autorelease];
}
@end
于 2012-07-13T15:13:30.700 に答える