0

スレッドにコードを正しく表示する方法がわからないので、事前に申し訳ありません。だから私は呼び出すApp Delegateを持っています

[director_ pushScene: [IntroLayer シーン]];

次に、私の introLayer はこれを行います。

-(void) makeTransition:(ccTime)dt
{
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[MainMenu scene] withColor:ccBLUE]];
}

次に、MainMenu.h と .m がありますが、.m 以外はほとんど空です。

@implementation MainMenu

// Helper class method that creates a Scene with the GamePlay as the only child.
+(CCScene *) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' is an autorelease object.
    MainMenu *layer = [MainMenu node];

    // add layer as a child to scene
    [scene addChild: layer];

    // return the scene
    return scene;
}
@end

次に、ナビゲーション コントローラーを使用するストーリーボードがあり、'makeTransition' 関数を呼び出したときにオープニング シーンをメイン メニューにしたいと考えています。私のストーリーボードには、このメイン メニューに [再生] ボタンがあります。この再生ボタンは、「CCViewController」クラスの別のビュー コントローラにプッシュ セグされます。CCViewController.m と .h があり、そこから cocos2dViewController.m と .h というサブクラスを作成しました。私の cocos2dViewController.m では、次のように呼び出します。

if(director.runningScene)

    [director replaceScene:[GamePlay scene]];

else

    [director pushScene:[GamePlay scene]];

GamePlay.m と .h は、ゲーム全体を定義する場所です。

そのため、実行すると起動画面が表示され、青色から黒色の画面に移行します。MainMenu.m に何もないからでしょうか。また、(私が思うに) MainMenu.m には何も必要ありません。MainMenu シーンをストーリーボードの初期 (メイン メニュー) シーンにする何らかの方法が必要なだけです。私はこれを機能させるのにかなり近づいていると感じています。この時点で提供する必要があるアドバイス/知識、または問題を診断するためにさらに情報が必要な場合は、再び大歓迎です. ありがとう!

4

1 に答える 1

0

cocos2d で実行中のシーンがない場合はrunScene、 ではなくを呼び出してシーンを開始する必要がありreplaceSceneます。

これは、最初に試して変更する必要があることです。

一方で、UIKit ビュー コントローラー内で cocos2d シーンを表示しようとしているように思えます。これも作業には注意が必要です。cocos2d 2.0 を使用している場合は、この投稿を参照してヒントを得てください。

于 2012-08-01T17:46:58.147 に答える