cocos2d-x용 CCDirector:::CCScene(CCScene*pScene) 사용 참고 사항
[[CCDirector sharedDirector] runWithScene:[ SceneA scene]];
[[CCDirector sharedDirector] replaceScene:[ SceneB scene]];
CCDirector가 SceneA를 시작 장면으로 가정하고 이제 SceneB로 대체합니다.그러면:
일련의 방법이 호출될 것입니다. 다음과 같습니다.scene: SceneB 2. init: SceneB 3. onEnter: SceneB 4. Transition이 발생합니다.5. onExit: SceneA 6. onEnterTransitionDidFinish:SceneB 7. dealloc:SceneB가'테이블'로 옮겨지면 onEnter를 받고, SceneB는 onExit를 받고, 마지막에 테이블에 있는 SceneA를 교체해서 onEnterTransitionDidFinish를 받는다.무대에 오른 SceneA가 완전히 로드될 때만 다음 SceneB가 풀릴 수 있음을 알 수 있다.두 개의 씬이 어느 프레임에서 동시에 메모리에 존재하면 메모리는 자연히 압력산이 크다는 것을 나타낸다.
코코스2d-x의 원본 코드를 다시 봅시다.
void CCDirector::replaceScene(CCScene *pScene)
{
assert(pScene != NULL);
unsigned int index = m_pobScenesStack->count();
m_bSendCleanupToScene = true;
m_pobScenesStack->replaceObjectAtIndex(index - 1, pScene);
m_pNextScene = pScene;
// replaceScene m_pNextScene, drawScene setNextScene 。
}
void CCDirector::setNextScene(void)
{
···;
if (! (newSceneType & ccTransitionScene))
{
if (m_pRunningScene)
{
m_pRunningScene->onExit(); // 5. onExit: SceneA
}
}
···;
}
new에서 나온 대상을 방출합니다. onExit () 에서 삭제해야 합니다.원리를 몰랐는데 new에서 나온 대상이destroy () 안에서 delete를 했는데, 결과적으로 실행할 때 창을 튕겼습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.