iDev/Cocos2D

cocos2d v3 RC3, Apportable 안드로이드 Back Button 구현하기

KraZYeom 2014. 3. 19. 08:17
반응형


안드로이드는 보통 프로세스를 종료하기 위해서 백 버튼을 사용합니다. Apportable으로 안드로이드 포팅시 기본적으로 백 버튼은 아무런 반응도 하지 않습니다. 

아래 링크를 참조해서 구현 할려니 뭔가 제대로 되지 않습니다. 다들 v3 미만의 버전의 가이드 인것 같습니다. 

http://docs.apportable.com/uikit-extensions.html#uiresponder

구글링을 해보니 저와 비슷한 내용들이 많습니다.

https://groups.google.com/forum/#!topic/apportable-discuss/992hX9vEdTw

https://groups.google.com/forum/#!topic/apportable-discuss/V9lMn188jqE


그나마 힌트를 얻은게 ViewController 단에서 구현하라. becomeFirstResponder 메소드를 직접 호출하라. 이 2개입니다. 

그래서 삽질로 appDelegate에서 [rootviewController becomeFirstResponder]; 를 호출하니 안 먹습니다. 


cocos2d v3에서 RootViewController는 CCDirector 입니다. 그래서 init 메소드의 가장 하단에 아래코드를 넣으면 잘 동작합니다. 기본적으로 종료만 되도록 하는 코드를 아래 링크를 참조했습니다.

https://gist.github.com/sdabet/5719684


    //Back button support

#ifdef ANDROID

    [self becomeFirstResponder];

#endif

}


return self;

}


//Back button support

#ifdef ANDROID


- (BOOL) canBecomeFirstResponder

{

  return YES;

}


- (void)buttonUpWithEvent:(UIEvent *)event

{

  CCLOG(@"Button event fired");

  

  switch (event.buttonCode)

  {

    case UIEventButtonCodeBack:

      // Back button is pressed

      

      // Pop current scene

      [[CCDirector sharedDirector] popScene];

      

      // Terminate the app if scene stack is empty

      if([[CCDirector sharedDirector] runningScene] == nil) {

        exit(0);

      }

      break;

    case UIEventButtonCodeMenu:

      // show menu if possible.

      break;

    default:

      break;

  }

}


#endif




반응형