2012-03-02 67 views
0

我有一個通常的iOS Cocos2d遊戲。我從一個MainMenuViewController開始,然後在按下「新遊戲」按鈕時,它會推送我的rootViewController,然後設置cocos2d場景和HelloWorldLayer。林不知道是否有任何相關的。EXC_BAD_ACCESS當cocos2d結束場景時

問題是當我想結束我的遊戲。當玩家剩餘0生命並且檢測到某個碰撞時,我希望場景結束,並且我想彈回到我的主菜單。因此,我調用下面的方法從我update: (ccTime) dt方法中檢測到碰撞後立即:

-(void)endScene { 
    [[SimpleAudioEngine sharedEngine] stopBackgroundMusic]; 
    [[CCDirector sharedDirector] end]; 
    [_rootViewController.navigationController popViewControllerAnimated:YES]; 
} 

的問題是結束時的情景,我得到一個各種EXC_BAD_ACCESS錯誤。一個我得到最經常是CCScheduler.m:

// delete all updates that are marked for deletion 
// updates with priority < 0 
DL_FOREACH_SAFE(updatesNeg, entry, tmp) { 
    if(entry->markedForDeletion) 
    { 
     [self removeUpdateFromHash:entry]; //THIS IS WHERE IS GET EXC_BAD_ACCESS 
    } 
} 

由cocos2d的記錄的唯一的事情就是

2012-03-02 13:36:20.849 Psycho Circles[25265:707] cocos2d: deallocing <CCScheduler: 0x3a3330> 

任何幫助,將不勝感激!

回答

0

[[CCDirector sharedDirector] end];

是不是你打電話來結束一個場景是什麼。

看看下面這個例子對於如何切換場景:

http://ganbarugames.com/2010/12/understanding-scenes-in-cocos2d-iphone/

CCTransitionRotoZoom *transition = [CCTransitionRotoZoom transitionWithDuration:1.0 scene:[HelloWorld scene]]; 
// Tell the director to run the transition 
[[CCDirector sharedDirector] replaceScene:transition]; 
+0

這個鏈接似乎假定以前的屏幕也是一個Cocos2s場景。我的問題是我只有1場景,然後我想用Cocos2d完成,然後回到我的第一個ViewController,它不使用Cocos2d,只是一個普通的UIKit筆尖。所以我不明白爲什麼更換場景會有所幫助。 – user1023127 2012-03-02 19:13:02

+0

OK我知道了 - 我只是停止選擇器並在完成時彈出視圖,然後當我回到遊戲中時,我將替換場景而不是重新啓動。似乎工作。 – user1023127 2012-03-02 19:25:32

+0

啊,好的。你說得對,這個例子是在場景之間切換的。我錯誤地解釋了你的問題,因爲我認爲菜單是另一個場景,就像我寫iPhone遊戲時一樣。 :) – Almo 2012-03-02 19:31:17