2012-06-27 60 views
2

我使用的是cocos2D遊戲引擎。並且在幾次回放之後,遊戲場景開始閃爍,精靈根本不動。但是當玩家出去時,精靈的位置會移動。每個函數都被調用。但沒有出現。我通過儀器檢查了內存消耗。內存消耗很好。任何幫助表示讚賞。 在此先感謝。幾場回放後遊戲場景開始閃爍

這是我在結束遊戲時使用的代碼。

[[CCDirector sharedDirector].openGLView removeFromSuperview]; 
[[CCDirector sharedDirector] stopAnimation]; 
[[CCDirector sharedDirector] end]; 

這是我在再次加載遊戲場景時使用的代碼。

if(! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) 
    [CCDirector setDirectorType:kCCDirectorTypeDefault]; 

CCDirector *director = [CCDirector sharedDirector]; 

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; 
viewController.wantsFullScreenLayout = YES; 

EAGLView *glView = [[EAGLView alloc] initWithFrame:[window bounds]]; 

[director setOpenGLView:glView]; 

if(! [director enableRetinaDisplay:YES]) 
    CCLOG(@"Retina Display Not supported"); 

[director setDeviceOrientation:kCCDeviceOrientationLandscapeRight]; 

[viewController setView:glView]; 
[window addSubview: viewController.view]; 
[window makeKeyAndVisible]; 

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 


[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer node]]; 
+0

想幹什麼?清楚地解釋一下。 – 2012-06-27 06:34:21

+0

我正在使用精靈並通過改變它們的位置來移動這些精靈。檢測像素完美的精靈碰撞。如果發現碰撞,結束遊戲場景。然後重播時我又開始新的比賽場景。這發生在我的比賽中。對於少數回放,遊戲進展順利。但過了一段時間後,當我重放遊戲時,遊戲場景開始閃爍。而精靈似乎並沒有動。但遊戲結束後,碰撞被檢測到,但沒有任何可見的。只是屏幕開始閃爍。這是我的問題。 – NiKKi

+0

奇怪的行爲。發佈你的重啓代碼,請 – Morion

回答

2

我不斷重複我自己的意見,所以我把它放在引號:

如果你在可可觸摸應用程序使用cocos2d的,做撈出所有重建的OpenGL視圖時間。創建一次,並保持它。也不要完全關閉cocos2d。只調用stopAnimation和startAnimation。如果內存不足,請在停止cocos2d並返回應用程序的Cocoa touch部分之前用空白場景替換當前的cocos2d場景。

未遵循此建議的開發人員仍然遇到各種問題。可能是因爲cocos2d在各種條件下重複關機和重啓循環都沒有得到很好的測試。

+0

同意,讓它在後臺運行。只重置你的遊戲狀態,以便所有的遊戲對象都能夠返回到原來的位置。 –

+0

@ LearnCocos2D,@jake_hetfield - 嗨。你能否告訴我,如果我想一次又一次地重複使用相同的遊戲場景,那麼我需要做的僅僅是[[CCDirector sharedDirector] stopAnimation]; ' 然後當我需要再次重新啓動遊戲場景時,我必須做的, '[[CCDirector sharedDirector] startAnimation];' 在應用程序委託。 我想我錯過了一些東西。你能幫我解決這個問題嗎? – NiKKi

+0

就是這樣。你可能還想暫時隱藏cocos2d gl視圖,因爲它來自UIView它應該有一個隱藏的屬性。 – LearnCocos2D