现在的位置: 首页 > 综合 > 正文

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

2018年05月18日 ⁄ 综合 ⁄ 共 514字 ⁄ 字号 评论关闭

转载自: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

抱歉!评论已关闭.