写了个类继承CCSprite,结果用不了spriteWithFile 这个方法。

来源:互联网 发布:淘宝店怎么才能靠前 编辑:程序博客网 时间:2024/04/29 01:22

转载自:http://www.cocoachina.com/bbs/read.php?tid=17232&page=2

cocos2d0.99.x的改动之一,简单说

CCSprite calls:
-(id) initWithXXX {
   self =  [self init];
}

所以在你的ccsprite子类的init方法中不要调用除[super init]之外的任何initWithXXX方法,否则就会出现递归的执行init的问题。

正确代码:

@implementation OrbSprite
-(id) init
{
   if( (self=[super init]) )
   {
         //此处可处理一些成员变量,但不要调用任何initWithXXX;
    }
   return self;
}
@end

///
id sub = [OrbSprite initWithFile:@"xxx"];  // <--- OrbSprite#init will be called.不用写成[[OrbSprite alloc] init]

具体可见issue778:http://code.google.com/p/cocos2d-iphone/issues/detail?id=778

原创粉丝点击