0

この質問の図のように構成された UISplitviewController アプリがあります。

ストーリーボード付きiPadのUISplitViewController?

ゲーム #1 またはゲーム #2 をクリックすると、それぞれのゲームが実行されます。ただし、2 番目のゲーム (#1 または #2) をクリックすると、次のエラーが表示されます。

例外がキャッチされていないため、アプリを終了しています
'NSInternalInconsistencyException'、理由: 'シーンを実行できません
別のシーンが実行中の場合。代わりにreplaceSceneまたはpushSceneを使用してください'

既存の Cocos2d シーンがあるかどうかを確認し、2 番目のゲームをクリックしたときにそれを置き換えるにはどうすればよいですか? 理想的には、ユーザーがクリックしてもう一方のゲームに戻れるように、両方のゲームを実行し続けるべきだと思います。これは可能ですか?

この行を単純に置き換えようとしました: [director runWithScene:scene];

この行で: [director replaceScene:scene];

残念ながら、次のメソッドで CCTextureAtlas.m というエラーが発生します。

-(void) drawNumberOfQuads: (NSUInteger) n fromIndex: (NSUInteger) start {...}

ここに画像の説明を入力

[アップデート]

すべてが適切にクリーンアップされるように、シーンを停止する必要があるかもしれないと思います。たとえば、ヘルプ画面をクリックすると、コントローラの viewWillDisappear が呼び出されます。これは、Cocos2d ビュー コントローラーを切り替える場合には発生しません。


これらの指示に従い、EAGLView を 1 回だけ作成した後、ほぼ動作するようになりましたが、2 番目のシーンで黒い画面が表示されます。新しいシーンが簡単に表示されることに注意してください。

4

1 に答える 1

0

既存の Cocos2d シーンがあるかどうかを確認し、2 番目のゲームをクリックしたときにそれを置き換えるにはどうすればよいですか?

if ([[CCDirector sharedDirector] runningScene] == nil) {
        [[CCDirector sharedDirector] runWithScene:sceneToRun];
    } else {
        [[CCDirector sharedDirector] replaceScene:sceneToRun];
    }
于 2012-05-22T14:59:26.173 に答える