cocos2d - 从CCSprite派生的addchild类

时间:2012-07-13 14:16:38

标签: cocos2d-iphone

我是cocos2d-iphone的初学者。

我对gamecene的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

这是gamescene的一部分:

//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];
...

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果你检查代码,initWithFile调用initWithTexture调用init,所以你处于一个循环中,这就引起了问题。尝试创建另一个构造函数或类方法来创建精灵并设置位置。

例如

//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