0

アプリがあります。このアプリは、UIKit と Cocos2D を組み合わせたものです。cocos2D ゲームを呼び出すボタンのある UIKit メニューがあります。それは正常に動作します。

ここで、cocos シーンを削除して UIKit メニューをプッシュしたいと思います。(ゲームオーバーです。メニュー画面に移動する必要があります)

私は試した

[[CCDirector sharedDirector] end];
[[CCDirector sharedDirector].openGLView removeFromSuperview];

うまくいきません。どうすればいいのかわからない。

ご協力いただきありがとうございます !

4

2 に答える 2

1

このようなことをしてみてください。uiviewcontrollerでcocosシーンをプッシュする場合は、このコードをViewDidLoadメソッドに追加します。

-(void)viewDidLoad{
[super viewDidLoad];
CCDirector *director = [CCDirector sharedDirector];

if([director isViewLoaded] == NO)
{

CCGLView *glView = [CCGLView viewWithFrame:[[[UIApplication sharedApplication] keyWindow] bounds]
                               pixelFormat:kEAGLColorFormatRGB565
                               depthFormat:0
                        preserveBackbuffer:NO
                                sharegroup:nil
                             multiSampling:NO
                           numberOfSamples:0];


director.view = glView;


[director setAnimationInterval:1.0f/60.0f];
[director enableRetinaDisplay:YES];
}

director.delegate = self;
[self addChildViewController:director];
[self.view addSubview:director.view];



[director didMoveToParentViewController:self];


if(director.runningScene)
{

[director replaceScene:[SceneFirst scene]];
}
else
{

[director runWithScene:[SceneFirst scene]];
}

}

ここで、SceneFirstは、プッシュするcocosシーンです。UiViewControllerにCCDirectorDelegateをデリゲートとして追加するだけです。このコード行をViewDidUnloadメソッドに追加します

[[CCDirector sharedDirector] setDelegate:nil];

Uikitビューに戻るには、タップしたCCmenuでこのコードを呼び出します

[[CCDirector sharedDirector] stopAnimation];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationController popViewControllerAnimated:YES];

この助けを願っています!!:)

于 2013-01-21T10:02:00.153 に答える
1

cocos2d 2.0 以降でこれを試してください:

View Controller を表示するには:

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];    

//presentModalViewController 
[app.navController presentModalViewController:leaderboardViewController animated:YES];

//dismissModalViewControllerAnimated:YES
[app.navController dismissModalViewControllerAnimated:YES];

サブビューを追加するには:

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
[app.navController.view addSubview:mSegmentedControl];
于 2013-01-21T07:14:41.087 に答える