2011-02-08 3 views
1

this tutorial을 사용하여 Ben Gottlieb's Twitter-OAuth-iPhone 코드를 내 cocos2d 0.99.5 프로젝트에 통합하려고합니다. 제대로로드 할보기 컨트롤러를 얻는 데 어려움을 겪고 있습니다. 나는 전에 표준 Cocoa Touch UI와 cocos2d를 섞어 본 적이 없었으며, 나는 약간의 깊이에서 벗어났다. 이 트위터에 연결하는 데 시간 때새로운 뷰 컨트롤러가 나타나고 CCScene 뒤에 사라집니다.

내가 내 응용 프로그램 위임에 다음 코드를 호출

-(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; 
    } 
} 

을이 호출되는 경우는, 트위터 UIViewController가 만들어, 그것은 즉시, 다음 화면의 애니메이션 및 애니메이션이 끝나면 (즉, 화면 상단에 도달 함) 사라집니다. 현재 실행중인 CCScene이 다시 나타나지만 감동에 반응하지 않습니다. 시뮬레이터에서 실행중인 장면이 다시 나타나지 않고 화면이 검은 색으로 변합니다. 불분명 한 경우에 viewController은 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

관련 문제