2011-02-17 4 views
2

나는 cocos2d에서 게임을 만들고 있습니다. Game Scene에는 UIViewController 인 메인 메뉴로 돌아갈 수있는 메뉴 버튼이 있습니다. 사용자가 다시 재생을 선택하고 동일한 게임 장면이 감독에서 실행되도록 호출되면 게임 장면 위에 분홍색 화면이 나타납니다.동일한 cocos2d 장면을 다시로드하면 분홍색 화면이 표시됩니다.

동일한 장면을 그 자체로 바꾸기 때문일 수 있습니다. 그래서 메인 메뉴가 호출 될 때 먼저 빈 장면으로 바꿨습니다. 코드 대체 장면은 다음과 같습니다.

if ([[CCDirector sharedDirector] runningScene] == NULL) { 
    [[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]]; 
} 
else { 
    [[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]]; 
} 

실행중인 장면이없는 경우 처음 확인한 후 게임 장면을 처음 시작합니다. 일부 장면이 이미 실행중인 경우 (이 경우 비어있는 장면),이를 게임 장면으로 바꿉니다. 오래된 장면이 제대로 파괴된다는 것을 의미하는 게임 장면의 dealloc이 호출됩니다. 그렇더라도 빈 장면을 게임 장면으로 바꾸면 분홍색 화면이 나타나고 다른 장면으로 바꾸면 아무런 문제가 없습니다.

이유는 무엇이며 해결책은 무엇입니까?

답변

1

마지막으로 문제가 발생하여 해결되었습니다. 필요한 것은보기 추가 및 제거의 신중한 놀이입니다. UIViewController 메뉴로 돌아올 때 superview에서 OpenGLView 제거했습니다. 다시 장면을 교체하는 동안 이전에 사용 중이던 동일한

[[CCDirector sharedDirector] openGLView] 

을 다시 응용 프로그램 창에 추가해야했습니다. 올바른 장소와 올바른 타이밍이 그랬습니다.

보기 또는 스프라이트의 사소한 오류로 인해 분홍색 화면이 표시 될 수 있습니다.

관련 문제