1

CCScene クラスを EAGLView に接続しようとしています。したがって、私の EAGLView はクラス 1 の IBOutlet です。それを接続し、setter および getter しました。次に、クラス 1 の ViewDidLoad で次のようにします。

[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];

問題は、CCScene クラスで以下に示すクラスを呼び出していないことです (NSLogs でテストしました)。とにかく、CCScene クラスの名前が CCSceneClass であるとしましょう。Class1 (My UIViewController) の ViewDidLoad から適切に接続して、CCScene クラスのこのメソッドが呼び出されるようにするにはどうすればよいでしょうか?

また、これが問題になる場合に、このメソッドで実行するコードは次のとおりです。

-(id)initWithEaglView:(EAGLView*)view {
NSLog(@"initWithEAGLView");
        //Attach CCDirector to EAGLView
        director = [CCDirector sharedDirector];
        [director setOpenGLView:view];
        //Make CCLayer and CCScene
        CCScene *scene = [CCScene node];
        CCLayer *layer = [CCLayer node];
        [scene addChild:layer];
        [director runWithScene:scene];
        [director setDisplayFPS:NO];
}

ありがとう!

私の問題:

1.これらの2行のポイントは何ですか(ところで、最初の行には、そのメソッドが見つからないという警告が表示されました:

[director setDirectorType:kCCDirectorTypeDisplayLink];
[director setAnimationInterval:1.0/60];

CCLayer クラスに既にゲーム ループがあるので、これらの行を取り除くことができるということですか?

それが私が残した唯一の質問です!

ありがとう!

4

1 に答える 1

3

CCScene クラスを OpenGL ビューに「接続」することはできません。実際に接続する必要はありません。

eaglView を設定したら、通常どおり CCDirector でシーンを実行します。

[[CCDirector sharedDirector] setOpenGLView:self.eaglView];
...
[[CCDirector sharedDirector] runWithScene:[CCSceneClass node]];

シーン クラス内の eaglView にアクセスする必要がある場合は、CCDirector 経由でこれを取得します。

EAGLView* view = [CCDirector sharedDirector].openglView;

アップデート:

UIKit アプリで Cocos2D ビューを初期化する完全なコード:

CCDirector* director = [CCDirector sharedDirector];
[director setDirectorType:kCCDirectorTypeDisplayLink];
[director setAnimationInterval:1.0/60];
[director setOpenGLView:(EAGLView*)subview];
[director runWithScene:[HelloWorldLayer scene]];

Learn Cocos2D bookには、UIKit アプリでの Cocos2D の統合 (およびその逆) について詳しく説明している章があります。そのページから本のソース コード(第 2 版) をダウンロードして、第 15 章のサンプル プロジェクト「ViewBasedAppWithCocos2D」を参照することもできます。

于 2011-11-16T11:34:12.283 に答える