고맙습니다. 문제가 있습니다. 어떻게 cocos2dx에서 메모리를 해제합니까? 제 게임에서 첫 장면은 많은 장면을 촬영할 수 있기 때문에 많은 장면을 촬영할 수 있습니다. 너무 많은 애니메이션이 있으므로이 장면에 만족하지만 다음 장면으로 넘어갈 때마다 이전에 사용 된 메모리를 해제하지 마십시오. 이것이 내 문제입니다. 그래서 장면을 바꿀 때 이전 장면에서 사용한 메모리를 어떻게 풀려고합니까?cocos2dx의 메모리 문제
-1
A
답변
0
장면간에 이동하려면 pushScene
또는 replaceScene
을 호출 할 수 있습니다.
푸시 장면
당신이 장면 사이에 밀고하는 경우
는 당신이 사이에 로딩 장면을 가지고하는 것이 좋습니다. 가볍기 때문에 이전 장면에서 모든 것을 해제 할 수 있습니다. 이것은onEnter(DidFinish)
과
onExit(DidStart)
방법이 유용 할 수있는 곳입니다.
호출 체인은 다음과 같습니다
oldScene->onExitDidStart()
loadScene->onEnter()
oldScene->onExit()
< - 당신이 모든을loadScene->onEnterDidFinish()
< 해제 곳입니다 - 당신이 새로운로드 곳입니다 장면newScene->onEnter()
등등 ... 기억을 올바르게 관리했다면 한 번에 두 개의 무거운 장면이 없어야합니다.
장면
를 교체 이것은 훨씬 쉽게 시나리오입니다. 새로운 장면은 이전 장면이 완전히 사라질 때까지 가능한 한 적게로드해야합니다. 나는. onEnterDidFinish()
이 호출되거나, 심지어 1 프레임 후에 호출됩니다.
0
Cocos2d-x는 자동 해제 메모리을 지원합니다. 예를 들어, Sprite :: create()를 호출하여 스프라이트를 생성하면 자동 스프레드 시트에이 스프라이트가 추가됩니다. 이 스프라이트를 추가하지 않으면 현재 장면의 자식 (또는 n 번째 수평으로 정렬 된 자식)이됩니다.
새을 사용하여 객체를 만들지 말고, 다음 장면을 호출 할 때 create()를 사용하면 마지막 장면의 모든 장면이 해제됩니다.
관련 문제
- 1. Cocos2dx의 애니메이션
- 2. Cocos2dx의 본문 노드
- 3. cocos2dx의 맞춤 이벤트
- 4. cocos2dx의 Game Center 통합
- 5. cocos2dx의 탈퇴에 가장 적합한 방법
- 6. 메모리 부족 문제 메모리 누출 문제
- 7. 메모리 문제
- 8. 메모리 문제
- 9. 메모리 문제
- 10. 누출 메모리 문제, 메모리 관리
- 11. cocos2dx의 사용자 정의 클래스에서 CCBAnimationManager를 얻는 방법
- 12. cocos2dx의 Sprite :: init()에 대한 오류
- 13. 애니메이션 스프라이트를 cocos2dx의 경로와 함께 이동
- 14. cocos2dx의 Resources/Assets 폴더에 파일/디렉토리 나열
- 15. Cocos2dx의 주/UI 스레드 코드 실행
- 16. FMod 메모리 스트림 문제
- 17. 안드로이드에서의 메모리 문제
- 18. 여러 이미지로드 메모리 문제
- 19. 포인터 메모리 할당 문제
- 20. 메모리 해제 문제
- 21. while 루프 메모리 문제
- 22. UITableView의 메모리 누수 문제
- 23. 메모리 누수 문제
- 24. ScrollView 메모리 문제
- 25. 아파치 메모리 문제
- 26. ListView 메모리 문제
- 27. 메모리 액세스 문제
- 28. dispatch_async 메모리 문제
- 29. 메모리 누수 문제 해결
- 30. CSV 읽기 - 메모리 문제