簡體   English   中英

無法返回自我Objective-c Cocos2d

[英]Can't return self Objective-c Cocos2d

我只是想警告您,我是法國人,為將來的錯誤感到抱歉。 我正在編寫蛇游戲(你知道,吃一個蘋果,蛇會變長),我真的很困。 我正在使用cocos2d,基本上,游戲完成了,除了一件事。 我只是用自己的身體來實現蛇的碰撞管理。 完成后,我的功能GameOver稱為:

-(void)gameOver{
for (NSUInteger i=0; i < [body count]; i++)
{
    [self removeChild:((SnakePart*)body[i]) cleanup:YES];
}

[self unscheduleUpdate];
[self removeChild:apple cleanup:YES];
[self removeChild:scoreLabel cleanup:YES];

CCTransitionRotoZoom *transition = [CCTransitionSlideInB transitionWithDuration:1.0 scene:   [EndGameLayer scene]];
[[CCDirector sharedDirector]replaceScene:transition];

}

我已經設置了一些斷點,以查看應用程序在哪里出錯,但是在那兒沒有出錯。 實際上,這似乎是在EndGameLayer的初始化中出錯的,此后立即調用。 初始化是:

-(id)init{

if( (self=[super initWithColor:ccc4(0, 0, 0, 255)]) ) {
    CGSize winSize = [[CCDirector sharedDirector] winSize];

    CCSprite * background = [CCSprite spriteWithFile:@"Game Over.jpg"];
    background.position = CGPointMake(winSize.width/2, winSize.height/2);


    CCMenuItemFont *boutonRecommencer = [CCMenuItemFont itemWithString:@"Restart" target:self selector:@selector(restart)];
    boutonRecommencer.fontSize = 28;
    boutonRecommencer.fontName = @"Helvetica";

    CCMenuItemFont *boutonMainMenu = [CCMenuItemFont itemWithString:@"Main Menu" target:self selector:@selector(mainMenu)];
    boutonMainMenu.fontSize = 28;
    boutonMainMenu.fontName = @"Helvetica";

    CCMenu *menuEcranFin = [CCMenu menuWithItems:boutonRecommencer, boutonMainMenu, nil];
    [menuEcranFin setPosition:ccp(winSize.width/2 ,winSize.height/2 - 65)];
    [menuEcranFin alignItemsInRows:[NSNumber numberWithInt:2], nil];
    [menuEcranFin alignItemsHorizontallyWithPadding:40];

    [self addChild:background];
    [self addChild:menuEcranFin];
}
return self;
}

再說一次,我在這段代碼中放置了一些斷點,但是應用程序通過了所有斷點而沒有問題,看來問題出在當它返回self時,但我真的不知道。 此外,此錯誤不會每次都出現。 有時會顯示我的gameOver屏幕,然后我可以重新啟動游戲,然后再試一次,該錯誤再次出現。 當gameOver出現時,幾乎總是第一次或第二次。 非常感謝你的幫助。

new我與自己發生碰撞時出現此錯誤,錯誤是:線程1:EXC_BAD_ACCESS(代碼= 1,地址= 0x800000008)。 當我越界到達數組時,我已經看到過類似的東西……但是在這種情況下,我真的不知道。 當我啟用Zombie對象時,錯誤為:線程1:EXC_Breakpoint(代碼= EXC = l386_BPT,子代碼= 0x0)。

好吧,即使我不理解,我也發現了問題。 導致錯誤的行是:

[self removeChild:apple cleanup:YES];

即使在GameOver函數之后,即使游戲正在通過使用蘋果的函數,游戲也似乎結束了。 有點奇怪,但是無論如何,現在可以了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM