0

UIButtonsに基づくUIKitメニューがあり、そのうちの1つをクリックすると、cocos2Dシーンが起動します。AppDelegateでCCDirectorを設定しています:

if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
    [CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector];
[director setAnimationInterval:1.0/60];
[director setDisplayFPS:YES];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];

そして、rootViewController(私のEAGLViewを保持するviewController)では、viewDidLoadメソッドでこれを行っています:

 glView = [EAGLView viewWithFrame:self.view.bounds
                               pixelFormat:kEAGLColorFormatRGBA8    
                               depthFormat:0 

                    ];

glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:glView atIndex:0];
[[CCDirector sharedDirector] setOpenGLView:glView];
CCScene *scene = [GameScene sceneWithParent:self];
[[CCDirector sharedDirector] runWithScene:scene];

MainMenuViewControllerでメニューを設定しています。ここから、navigationControllerのスタックにあるRootViewControllerをプッシュします。これは完璧に機能し、私のゲームは問題なく開始されます。RootViewController(cocos2dシーンを保持している)からUIButtonを使用して戻ることもできます:- (IBAction)goBack { [self.navigationController popViewControllerAnimated:YES]; [[CCDirector sharedDirector] end];}

しかし、ゲームシーンをリロードしようとすると、アプリケーションが終了します。私はこの方法を試しました: CCDirectorを再起動しますが、無駄です!! CCDirectorを一時停止してアニメーションを再開しようとしましたが、無駄でしたが、発生するエラーはcocos2dの描画メソッドに関連しています!! 助けてください

4

1 に答える 1

0

私はちょうど私の問題を解決しました。したがって、UINavigationController を使用しようとしている[[CCDirector sharedDirector] end]場合は、rootController がスタックからポップされると、cocos2d ワールドのすべてのシーンが解放されるため、使用する必要はありません。ただし、サブビューのみ (ホール コントローラではなく) を削除しようとしている場合は、CCDirector を終了する必要があります!! 私の問題は、GameScene の子として追加したシングルトン クラスにありました。CCDirector を終了してもメモリにまだ存在するため、ゲーム シーンを再作成する前に解放する必要がありました。これが明確であることを願っています。

于 2012-11-15T13:36:37.637 に答える