Skip to content

cocos2d x 3.4 windowPhone 8.0 8.1 종료(close App) 관련 이슈

ozt88 edited this page Feb 5, 2015 · 2 revisions
  1. window phone에서는 Director::getInstance()->end(); 를 호출해도 전체 App이 종료되지 않는다.
  • 심지어 AppDelegate의 소멸자가 호출되지도 않는다!!
  • 앱을 강제로 종료하는 exit(0)을 사용하는 방법도 있으나 이 역시 정상종료라 할 수 없다.
  • 따로 종료메소드를 사용하거나 end()를 변경하는 방법을 사용해야될 것같다...
  1. window phone App에 대해서 마이크로 소프트에서 권장하는 App종료방법은 Back Key를 통한 종료이다.
  1. cocos2d-x 3.4버전에서 wp8과 8.1로 (다른 버전의 경우는 잘 모르겠다.) 빌드하는 경우 백버튼 이벤트를 받을 수 있는 경로가 불투명하다.

  2. wp 8.0의 경우 Cocos2dRender에서 Cocos2dRender::onBackButton()을 수정하면 백버튼을 사용할 수 있다.

  • Cocos2dRender 경로는 \proj.wp8-xaml\AppComponent\src\Cocos2dRender
  • 수정 예 : KEY_ESCAPE 이벤트를 발생하게 하고 상위 레이어에게 KEY_ESCAPE시 레이어 POP 혹은 종료를 실행하게 함
  void Cocos2dRenderer::OnBackButton()
  {
  cocos2d::EventKeyboard event(cocos2d::EventKeyboard::KeyCode::KEY_ESCAPE, false);
  cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
  }
  1. wp 8.1의 경우 cocos2dRender에서 onBackButton 자체가 없다...
  • 대신 GLViewImpl 클래스에 OnBackButton함수가 있다.
  • 여기 BackButton 이벤트를 등록하는 방법은 같은 클래스의 QueueBackKeyPress()를 사용하는데
 void GLViewImpl::QueueBackKeyPress()
 {
     std::shared_ptr<BackButtonEvent> e(new BackButtonEvent());
     mInputEvents.push(e);
 }
  • 이 함수를 호출하는 곳이 전체 솔루션 어디에도 없다 ㅠㅠ
  • 개인적으로 아직 미구현 단계가 아닌가 생각한다.
Clone this wiki locally