2011-02-08 76 views
1

我正在努力将Ben Gottlieb's Twitter-OAuth-iPhone代码集成到我的cocos2d 0.99.5项目使用this tutorial。我有一些困难让视图控制器正确加载。我从来没有将Cocos2d与标准的Cocoa Touch UI混合在一起,而且我的深度已经有点远了。新的视图控制器出现,然后消失在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会重新出现,但它不会响应触摸。在模拟器上,不再显示正在运行的场景,屏幕变黑。如果不清楚,viewController是最近在0.99.5中添加到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 2011-02-09 14:47:04

相关问题