2

cocos2dでゲームを作っています。ゲーム シーンには、UIViewController であるメイン メニューに戻るためのメニュー ボタンがあります。ユーザーがもう一度プレイすることを選択し、同じゲーム シーンがディレクターで実行されるように呼び出されると、ゲーム シーンの上にピンク色の画面が表示されます。

同じシーンをそれ自体に置き換えたためかもしれません。そのため、メイン メニューが呼び出されたときに最初に空のシーンに置き換えました。コード置換シーンは次のとおりです。

if ([[CCDirector sharedDirector] runningScene] == NULL) {
    [[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]];
}
else {
    [[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]];
}

実行中のシーンがないかどうかを確認し、ゲーム シーンを初めて開始します。シーンが既に実行されている場合 (この場合は空のシーン)、それをゲーム シーンに置き換えます。ゲーム シーンの dealloc とも呼ばれます。これは、古いシーンが適切に破棄されることを意味します。それでも、空のシーンをゲームシーンに置き換えるとピンクの画面になりますが、他の新しいシーンに置き換えると問題はありません.

何が原因で、解決策は何ですか?

4

1 に答える 1

1

Finally, the problem caught and resolved. All it needs is careful play of adding and removing views. I was removing OpenGLView from superview when coming back to menu in UIViewController. While replacing the scene again, same

[[CCDirector sharedDirector] openGLView] 

which was in use earlier, had to be added back to the application window. Right place and right timing did it.

Any minor error in views or sprites can show you with pink screen :)

于 2011-03-08T14:32:35.790 に答える