2011-02-08 9 views
1

this tutorialを使用してBen Gottlieb's Twitter-OAuth-iPhoneコードを自分のcocos2d 0.99.5プロジェクトに統合しようとしています。 View Controllerを適切にロードするのにいくつかの問題があります。以前は標準のCocoa Touch UIのものとcocos2dを混ぜたことはありませんでした。新しいビューコントローラが表示され、CCSceneの後ろに消えます

それは、Twitterに接続する時が来たときに私は私のアプリデリゲートに次のコードを呼び出す:

-(void) twitterAccountLogin 
{ 
    UIViewController *controller = nil; 
    if (!_engine) { 
     _engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate: self]; 
     _engine.consumerKey = kOAuthConsumerKey; 
     _engine.consumerSecret = kOAuthConsumerSecret; 

     controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self]; 
    } 

    if (controller) { 
     [[CCDirector sharedDirector] stopAnimation]; 
     [viewController presentModalViewController:controller animated:YES]; 
     [controller release]; 
     return; 
    } 
} 

これが呼び出されると、TwitterのUIViewControllerが作成され、それはできるだけ早くそれとして、その後、画面上のアニメーション化、およびアニメーションが終了すると(つまり、画面の一番上に表示されます)、消えます。現在実行中のCCSceneが再表示されますが、タッチには反応しません。シミュレータでは、実行中のシーンが再表示される代わりに、画面が黒くなります。それが不明な場合は、が最近0.9935でcocos2dに追加されたRootViewControllerです。

UIViewControllerが作成されていて、なんとか実行中のシーンの下に描かれているようですが、デバッグはどこにもありません。どこが間違っていたのですか?

答えて

0

ここに助けを検索した後とcocos2dフォーラムで、ここで私がやってしまっているものです。要するに

-(void)pauseMenuButtonPressed 
{  
    if(!paused) 
    { 
     paused = TRUE; 

     [[CCDirector sharedDirector] pause]; 

     CGSize s = [[CCDirector sharedDirector] winSize]; 
     pauseLayer = [CCColorLayer layerWithColor: ccc4(150, 150, 150, 125) width: s.width height: s.height]; 
     pauseLayer.position = CGPointZero; 
     [self addChild: pauseLayer z:8]; 

     CCMenuItem *pauseMenuItemResume =[CCMenuItemImage itemFromNormalImage:@"menuItemResumeSmall.png" 
                  selectedImage: @"menuItemResumeSmallSelected.png" 
                    target:self 
                   selector:@selector(pauseMenuResumeSelected)]; 


     CCMenuItem *pauseMenuItemMainMenu =[CCMenuItemImage itemFromNormalImage:@"menuItemMainMenuSmall.png" 
                   selectedImage: @"menuItemMainMenuSmallSelected.png" 
                    target:self 
                    selector:@selector(pauseMenuExitToMainMenuSelected)]; 

     // Create the pause menu and add the menu items to it 
     pauseMenu = [CCMenu menuWithItems:pauseMenuItemResume, pauseMenuItemMainMenu, nil]; 

     // Arrange the menu items vertically 
     [pauseMenu alignItemsVertically]; 

     // add the menu to the scene 
     [self addChild:pauseMenu z:10]; 

     [hudButtons setIsTouchEnabled:NO]; 
    } 

} 

、むしろ、ポーズメニュー用の新しいシーンをプッシュするよりも、私は、ゲーム内のすべてのアクションを一時停止し、画面をオーバーレイする透明層を作成し、その上にメニューを表示します。これはcocos2dでこの問題を処理する従来の手段で、少なくとも0.99.5(これはゲームが現在実行中のものです)のようです。

0

あなたのビューコントローラは、このようなものでなければなりません:

[[[CCDirector sharedDirector]openGLView] addSubview: viewController.view]; 
[viewController presentModalViewController: controller animated:YES]; 
+0

私はviewControllerがプロジェクトのRootViewControllerであることを明確にすべきでした。ビューをサブビューとしてCCDirectorに追加すると、アプリケーションがクラッシュする無限ループが作成されます。説明を明確にするために質問が編集されました。私は助けに感謝します! – jonmorgan

+0

あなたのviewControllerを次のように宣言した場合、 viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 私は動作すると思う.. – xuanweng

関連する問題