[英]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.