2011-11-28 73 views
0

我正在嘗試重新啓動我的遊戲的CCDirector。但我有錯誤。重新啓動CCDIrector導致奇怪的錯誤

這一切飛度是我的代碼在我的菜單[我的菜單與XIB]:

- (void) retryGame:(NSNotification *)notif { 
    [menu2Game.view removeFromSuperview]; 
    [[CCDirector sharedDirector] end]; 
    [[CCDirector sharedDirector] release]; 

    [self startGame:play]; 
} 

它給我和EXC_BAD_ACCESS。就在我做了兩次。第一個作品完美...

但是,如果除去

[self startGame:play]; 

我將返回到菜單,我點擊按鈕戲,我可以國防部它無限的時間和它的作品!

我退出了它,我不工作我試了20次。

- (void) quitGame:(NSNotification *)notif { 
    [menu2Game.view removeFromSuperview]; 
    [[CCDirector sharedDirector] end]; 
    [[CCDirector sharedDirector] release]; 

    //Restart Animations 
    [logo setFrame:CGRectMake(239, 119, 1, 1)]; 
    [play setFrame:CGRectMake(-233, play.frame.origin.y, play.frame.size.width, play.frame.size.height)]; 
    [options setFrame:CGRectMake(-233, options.frame.origin.y, options.frame.size.width, options.frame.size.height)]; 
    [extras setFrame:CGRectMake(-233, extras.frame.origin.y, extras.frame.size.width, extras.frame.size.height)]; 
    [GC setFrame:CGRectMake(0, 300, 1, 1)]; 

    [self viewDidLoad]; 
} 

//在我viewDidLoad中我只有動畫

可能是什麼問題呢?我嘗試延遲做[perfomselector],但它的同樣的問題...只要我回到菜單並點擊播放,我可以再次播放。無論速度,您可以點擊播放,暫停,退出,播放,暫停,退出等......而遊戲去完美

感謝

回答

1

CCDirector是單身,你不應該把它釋放信息!

[[CCDirector sharedDirector] release]; 

完全沒有這樣做。對於它的價值,CCDirector startAnimation和stopAnimation是暫時停止Cocos2D更可行的方法。

+0

我得到了同樣的問題,我會發布更多的信息.​​..謝謝 – Edig

0

同樣的問題

- (void) retryGame:(NSNotification *)notif { 
    [menu2Game.view removeFromSuperview]; 
    [[CCDirector sharedDirector] end]; 
    //[[CCDirector sharedDirector] release]; 

    [self startGame:play]; 
} 

開始遊戲

- (IBAction)startGame:(id)sender { 


    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(quitGame:) name:@"quitGame" object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(retryGame:) name:@"retryGame" object:nil]; 

    CCDirector *director = [CCDirector sharedDirector]; 

    // Init the View Controller 
    menu2Game = [[Menu2Game alloc] initWithNibName:@"Menu2Game" bundle:nil]; 
    menu2Game.wantsFullScreenLayout = YES; 

    // 
    // Create the EAGLView manually 
    // 1. Create a RGB565 format. Alternative: RGBA8 
    // 2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition 
    // 
    // 
    EAGLView *glView = [EAGLView viewWithFrame:[self.view bounds] 
            pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8 
            depthFormat:0      // GL_DEPTH_COMPONENT16_OES 
         ]; 

    // attach the openglView to the director 
    [director setOpenGLView:glView]; 

    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices 
    // if(! [director enableRetinaDisplay:YES]) 
    //  CCLOG(@"Retina Display Not supported"); 


    [director setAnimationInterval:1.0/60]; 
    [director setDisplayFPS:YES]; 


    // make the OpenGLView a child of the view controller 
    [menu2Game setView:glView]; 

    // make the View Controller a child of the main window 
    [self.view addSubview: menu2Game.view]; 

    // Default texture format for PNG/BMP/TIFF/JPEG/GIF images 
    // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 
    // You can change anytime. 
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

    // Assusme PVR images have the alpha channel premultiplied 
    [CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 

    // Run the intro Scene 
    if ([director runningScene] == NULL) { 
     [[CCDirector sharedDirector] runWithScene:[Game scene]]; 
    }else{ 
     [[CCDirector sharedDirector] replaceScene:[Game scene]]; 
    } 
} 

如果我評論[自startGame:玩]。誤差不會出現

Errror在這裏apears

CCTextureAtlas.m [科科斯2D]

#if CC_TEXTURE_ATLAS_USE_TRIANGLE_STRIP 
    glDrawElements(GL_TRIANGLE_STRIP, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(indices_[0]))); 
#else 
    glDrawElements(GL_TRIANGLES, (GLsizei) n*6, GL_UNSIGNED_SHORT, (GLvoid*) (start*6*sizeof(indices_[0])));