私はいくつかのグーグルとスタックオーバーフローを行いましたが、それでも何をすべきかという疑問が残りました. iPhone用の大きなナビゲーションベースのプロジェクト、iOS5.1があります。いくつかの VC では、男の子のキャラクターが咀嚼するアニメーションなど、多かれ少なかれ複雑なアニメーションを含める必要があります。私は cocos2d を使用してきましたが、cocos2d で目標を達成するのは非常に簡単であることを知っています。しかし、必要な VC に coco2sd を使用したシーンとレイヤーを何らかの方法で含めることは可能ですか? またはどういうわけかビューを s シーンと重ね合わせますか? どんなヒントでも大歓迎です。
2 に答える
2
私がこれを行った方法は、ViewController を初期化するときに CCDirector を作成することです。CCDirector は、ViewController のサブビューを作成する OpenGL ビューを使用します。CCDirector があれば、通常 Cocos2D で行うすべてのことができます。
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeMainLoop];
CCDirector *director = [CCDirector sharedDirector];
EAGLView *glview = [EAGLView viewWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
[self.view insertSubview:glview atIndex:1];
[director setOpenGLView:glview];
于 2012-09-11T08:56:17.730 に答える
1
まず、AppDelegate でディレクターを作成する必要があります。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
// Create Cocos2D Director
//
// Try to use CADisplayLink director
// if it fails (SDK < 3.1) use the default director
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector];
}
-viewDidLoad
メソッドで、Cocos2D によって作成されたビューをself.view
サブビューとして追加します。
- (void)viewDidLoad {
[super viewDidLoad];
// configre subviews
// ...
// Add your Cocos2D view
EAGLView * glView = [EAGLView viewWithFrame:self.view.bounds
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0];
[glView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[[CCDirector sharedDirector] setOpenGLView:glView];
[self.view addSubview:glView];
// Run a blank scene for testing
CCScene * blankScene = [CCScene node];
[[CCDirector sharedDirector] runWithScene:blankScene];
}
その後、独自のシーンを作成して置き換えることができますblankScene
。
この技術に関する記事「Cocos2D と UIKit を統合する方法」を強くお勧めします。@Rayの投稿を読んで、これをうまく実装しました! ;)
于 2012-09-11T09:02:37.177 に答える