2013-05-15 1 views
2

iOS의 Cocos2dx에서 동일한 장면을 다시 시작하는 데 문제가 있습니다. 플레이어가 죽을 때마다 동일한 장면을 다시 시작하려고합니다. 시동시에 많은 일들이 일어나기 때문에 가능하다면 모든 게임 변수를 수동으로 재설정하지 말고 캐쉬를 제거하십시오. 플레이어가 내가 죽는 부분에서 Cocos2dx 재시작 장면 충돌 CCTextureCache

cocos2d::CCScene *pScene = GameScene::scene(); 
cocos2d::CCDirector::sharedDirector()->replaceScene(pScene); 

을 다음 그러나 이것은 다음과 같은 충돌에 이르게 :

CCTextureCache::CCTextureCache() 
{ 
    CCAssert(g_sharedTextureCache == NULL, "Attempted to allocate a second instance of a singleton."); 
    m_pTextures = new CCDictionary(); 
} 

Gamescene는 CCLayer에서 상속과 생성자는 다음과 같습니다.

CCScene* GameScene::scene() 
{ 
    CCScene *scene = CCScene::create(); 
    GameScene *layer = GameScene::create(); 
    scene->addChild(layer);  
    return scene; 
} 

이 줄에서 응용 프로그램이 충돌합니다. GameScene * layer = GameScene :: create(); 그러나 나는 더 이상 그것을 실제로 따라갈 수 없다. 나는 현장 교체와 관련하여 잘못된 행동을하고 있는가? 어떤 도움

+1

괜찮아 보이는가, 질문은 : 그 외에 다른 일을합니까? 공통적 인 문제는 cocos2d 이후에 정리하는 것이 지나치게 열심히하는 것입니다. 일반적으로 불필요하며 때로는 비생산적입니다 (장면 전환이 발생할 때마다 캐시 된 모든 데이터를 제거하는 것과 같이). 드문 경우에 충돌이 발생할 수 있습니다 (디렉터와 같은 것을 dealloc하려고 시도하는 경우) . 충돌에 대한 호출 스택이 도움이됩니다. – LearnCocos2D

답변

0

에 대한

감사는 현장() 정적 기능에서 적절한 검사를 구현해야하지만 그 문제의 원인이되지 않을 수 있습니다 생각하지만. 이 GameLayer 클래스의 모든 코드를 제공 할 수 있다면 내가하려는 일을했기 때문에 실수를 지적 할 수 있습니다.

아마 당신의 init 함수에서 텍스처 캐시를 사용하여 불법적으로 처리하려고 시도했을 것입니다. 하지만 코드를 게시하십시오!

관련 문제