2011-12-23 5 views
0

나는 cocos2d에서 이상한 점을 언급했다.장면간에 캐시를 지울 수 없습니까?

게임 장면과 메뉴 장면의 초기 설정에서 frameCache plist와 spriteSheet를 캐시에로드합니다. 내가, 다시 게임에 메뉴로 장면을 교체 할 때

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames]; 
    [[CCTextureCache sharedTextureCache] removeAllTextures]; 

을 그럼, 그가 다시 따라서 캐시를로드 나던 :

내가 내 게임 장면의 dealloc 방법의 경우 내가 깨끗한 캐시 것을 발견 그가 필요한 프레임을 찾을 수 없다는 오류를 얻습니다.

그래서 모든 장면에서 한 번만 캐시에 프레임을로드 할 수있는 것처럼 보입니다. 그리고 장면을 제거하고 장면으로 돌아 가면 다시로드되고 오류가 발생합니다.

내 메뉴 장면에서 캐시를 지우고 게임으로 돌아가서 메뉴로 돌아 가면 메뉴 장면도 캐시를로드하지 않고 필요한 프레임을 찾을 수 없습니다.

이것은 흥미 롭습니다. 거기에 이유가 있나? 또는 나는 어딘가 여기에서 틀린가?

감사합니다.

답변

1

다음과 같이 newScene에 oldScene에서 장면을 변경하는 경우 이벤트의 순서는 다음과 같습니다

  1. newScene :
  2. oldScene init을 : 할당 해제 그래서

것은 당신이 초기화에서 스프라이트 프레임을로드하는 경우를 , 이전 장면의 dealloc에서 캐시를 지우면 새로운 장면에서 스프라이트 프레임을 사용할 수 없게됩니다.

가장 좋은 방법은 replaceScene을 새 장면으로 호출하기 바로 전에 캐시를 지우는 것입니다.

+0

감사합니다. 정말 좋은 답변이야! – Curnelious

관련 문제