2011-10-25 3 views
3

Cocos2d 템플릿과 일반적인 샘플 프로젝트는 applicationDidFinishLaunching/application : didFinishLaunchingWithOptions : 메소드에서 cocos openGL ES 뷰 및 기타 내용을 초기화합니다.application : didFinishLaunchingWithOptions : cocos2d 및 OpenGL ES보기를 초기화하는 데 정말로 좋은 장소입니까?

"의 OpenGL ES를 사용하는 앱들이 도면 환경을 준비하기 위해이 방법을 사용해서는 안 대신, 그들이 어떤 OpenGL을 ES는 applicationDidBecomeActive에 전화를 그리기 연기한다 : 마지막 방법과 관련, Apple iOS Programming Guide는 상태. : 방법."

그래서, 내 질문은, 응용 프로그램입니다 : didFinishLaunchingWithOptions : 정말적인 Cocos2D를 초기화하는 적절한 곳은? 또는 우리는 applicationDidBecomeActive에서 그렇게해야합니까?

applicationDidBecomeActive :가 방법이라고 생각하면 백그라운드 실행과 관련하여 어떤 결과가 발생합니까? 앱이 포 그라운드에서 비활성 상태가되면 일종의 이중 초기화를 피하기 위해 무엇을해야합니까? 모든적인 Cocos2D 애플 리케이션의 지금까지 99.9 % 사전

+0

+1 좋은 캐치! 난 당신이 더 cocos2d 공식 포럼/버그 추적기에보고하고 개발자가 자신의 코드를 수정 해 줄 생각 :) – Lukman

답변

1

좋은 질문에

덕분에 ... 방식적인 Cocos2D 그것을 수행하고 나는 하나의 문제로 못 들었 해.

이는 OpenGL ES 애플 리케이션을위한 특히 중요한 이유 애플은 정말 설명하지 않기 때문에, 나는 다음과 같은 가정 것 :

  • 는 OpenGL ES 응용 프로그램이 자신의 뷰를 초기화하는 데 상대적으로 긴 시간이 걸릴 경향이있다. 특히 많은 자산을로드 할 때 앱이 너무 오래 걸리면 시스템에 의해 앱이 삭제 될 수 있습니다. 이는 Cocos2D 첫 번째 장면이 빠르게로드되어야 함을 의미하며 특히 첫 번째 장면의로드가 applicationDidBecomeActive로 연기되지 않는 한 모든 게임의 자산을로드하지 않아야합니다. 후자는 이미 실행중인 다른 장면이 없는지 확인하기 위해 추가 검사가 필요합니다.
  • 응용 프로그램은 applicationDidBecomeActive에서 일반적인 작업을 수행해야합니다. 이는 앱이 일시 중지 된 상태에서 일부 설정이 변경 될 수 있기 때문에 일반적으로 좋은 조언입니다. 예를 들어 사용자가 기기 언어를 변경하거나 비행기 모드를 입력하면 앱이 다시 활성화 될 때 이에 응답해야합니다. 일부 변경 사항은 특히 OpenGL ES 응용 프로그램에 영향을 미칠 수 있습니다. 예를 들어 사용자가 영어에서 일본어로 로케일을 변경 한 경우 모든 비트 맵 글꼴을 다시로드하는 것과 같습니다.