Cocos2D Crash on -(id) init



我有一个场景,它包含两个图层。一个叫BackgroundLayer,另一个叫GameplayLayer。背景图层看起来像这样:

-(id) init{
self = [super init];
if(self != nil){
    CCSprite * backgroundImage;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        backgroundImage = [CCSprite spriteWithFile:@"backgroundr.png"];
    }
    else{
        backgroundImage = [CCSprite spriteWithFile:@"background.png"];
    }
    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    [backgroundImage setPosition:CGPointMake(screenSize.width/2, screenSize.height/2)];
    [self addChild:backgroundImage];
}
return self;}


很好。但问题是,GameplayLayer会导致游戏崩溃。GameplayLayer看起来像这样:

-(id) init{
    self = [self init];
   if( self != nil){
        }
    return self;
}

游戏场景也是这样:

-(id) init{
self = [super init];
if(self != nil){
    BackgroundLayer * backgroundLayer = [BackgroundLayer node];
    [self addChild:backgroundLayer z:0];
    GameplayLayer * gameplayLayer = [GameplayLayer node];
    [self addChild:gameplayLayer z:5];
}
return self;

}


我真的看不出有什么问题。但是如果我移除-(id) init,它就不会崩溃。
有什么想法吗?以下是日志的最后几行:

    2013-03-12 00:41:41.371 CocoTest[3574:c07] cocos2d: **** WARNING **** CC_ENABLE_GL_STATE_CACHE is disabled. To improve performance, enable it by editing ccConfig.h
2013-03-12 00:41:41.371 CocoTest[3574:c07] cocos2d: cocos2d v2.0.0
2013-03-12 00:41:41.371 CocoTest[3574:c07] cocos2d: Using Director Type:CCDirectorDisplayLink

GameplayLayer中的self = [self init];将永远递归。应该是self = [super init];

最新更新