0

2 つのレイヤーを含む 1 つのシーンがあります。1 つは BackgroundLayer という名前で、もう 1 つは 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
4

1 に答える 1

3

self = [self init]; inGameplayLayerは永久に再帰します。する必要がありますself = [super init];

于 2013-03-12T00:52:20.773 に答える