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]];
4

1 に答える 1

2

私は自分のアドバイスを繰り返し続けるので、引用符で囲みます。

Cocoa タッチ アプリで cocos2d を使用している場合は、常に OpenGL ビューを削除して再作成しないでください。一度作成したら、それを保持します。また、cocos2d を完全にシャットダウンしないでください。stopAnimation と startAnimation のみを呼び出します。メモリが非常に少ない場合は、cocos2d を停止してアプリの Cocoa touch 部分に戻る前に、現在の cocos2d シーンを空のシーンに置き換えます。

このアドバイスに従わない開発者は、あらゆる種類の問題に直面し続けます。おそらく、cocos2d は、さまざまな条件下でシャットダウンと再起動のサイクルを繰り返して十分にテストされていないためです。

于 2012-06-27T11:29:22.910 に答える