2013-01-22 3 views
0

나는 많은 자산을로드하는로드 장면이있는 cocos2d 게임을 가지고 있습니다. 게임은 스플래시 화면으로 시작한 다음로드 장면을 시작합니다. 로드 장면은 배경을로드하여 시작하므로 애셋로드 중에로드 장면 배경을 볼 수 있습니다. loadingbackground.pvr.ccz블랭킹 아웃하지 않고 cocos2d에서로드 장면 배경을로드하는 방법은 무엇입니까?

다른 장치에서 다르게 작동하는 것 같다 :

내가 파일 경로 CCSprite::spriteWithFile:를 호출하고 전달하여 로딩 장면 배경을로드

아이폰에
  1. (3GS) 시뮬레이터를, 나는 로딩 장면을 볼 예상대로
  2. iphone retina 시뮬레이터에서로드하는 장면이 보이지 않습니다 (아직 애셋이 많지 않으므로 빠르게 발생할 수 있습니다). 그러면 메인 메뉴 장면으로 직접 이동합니다.
  3. ipad 3 장치에서 스플래시 화면이 나타나고 검은 색 화면이 0.5 초가 지나면 주 메뉴 장면이 나타납니다.

iPad 3에 나타나는 검은 색 화면을 피하기 위해 할 수있는 일이 있는지 확인하고 싶습니다.이 문제는 로딩 배경을로드하는 데 걸리는 시간 때문에 발생합니다.

나는 다음과 같은 최적화를 시도했다 (대부분 @에 따라 스테 펜의 blog post on memory optimization) :

  1. 는 크기를 감소 그 자체로 pvr.ccz의 spritesheet에 적재 배경 (원래 2.3 MB의 RGB8 된 png 파일), 이전 1.8MB로
  2. 사용 직후에 텍스처에서 이미지를 제거했습니다.

iPad 3에서 여전히 검은 색 화면이 표시됩니다.

업데이트 : 문제 발견 - OnEnter을 재정의하고 [[CCDirector sharedDirector]replaceScene]을 호출하고 백그라운드 스레드에서 동일한 코드를 호출하는 코드가있었습니다. OnEnter 과부하를 제거하고 깜박임없이 작동했습니다.

감사합니다.

답변

1

시뮬레이터에서 발생하는 모든 작업을 무시하십시오. 그것은 관련성이 없으며, 장치에 초점을 맞 춥니 다.

로드 장면을 초기화하고로드 장면의 배경을 추가하는 경우 업데이트 일정을 잡고 업데이트 방법으로 자산을로드해야합니다. 그렇지 않으면 init에서 애셋을로드하면 cocos2d가 화면을 다시 그리기 전에 모든 애셋을로드하기 때문에 백그라운드가 그려지지 않습니다.

여전히 실패하는 경우 방문 메시지를 배경 스프라이트와 [[CCDirector sharedDirector] drawScene] 다음에 보내면됩니다. 이렇게하면 장면이 다시 그려집니다.

+1

애셋을 백그라운드에서로드 했으므로 답변으로 표시했습니다. 또한 질문에 대한 업데이트에서 설명한 다른 버그가 수정되었습니다. 감사! – Anand

1

이 cocos2d-iphone 또는 cocos2d-x입니까? 태그가 맞는지 확인하십시오 :)

나는 시작 깜박임을 말하는 것 같습니다.이를 피할 수있는 몇 가지 방법이 있습니다. 먼저 iOS 6 및 iOS 5 이하 버전에서 rootViewController를 올바르게 처리해야합니다. 각각에 대해 약간의 변경 사항이 있습니다.당신은 항상 테스트를 위해 실제 장치에 의존한다, 당신이 시뮬레이터의 행동이 안정되지 알 필요가 http://www.cocos2d-iphone.org/forum/topic/34471

둘째 것,하지만 당신은 여전히있을 것이다 매우 가능성이 높습니다 :

당신은 여기에 약간의 참조를 찾을 수 있습니다 깜박임 문제.

죄송합니다. 예제 코드를 제공하지 않았지만 실제 문제가 무엇인지 알기에 충분한 정보를 제공하지 않았습니다.