2013-05-03 5 views
0

나는 타일지도적인 Cocos2D-X에서 게임을 만들려고 해요, 내가 아래의 오류 받고 있어요 초기화 :적인 Cocos2D-X - EXC_BAD_ACCESS (코드 = 2, 주소 = 0x0으로)를 CCTMXTiledMap

EXC_BAD_ACCESS (코드 = 2, 주소 = 0x0) setContentSize (CCSizeZero); CCTMXTiledMap :: initWithTMXFile (const를 문자 * tmxFile) 방법의

나는이 방법으로 타일 맵 만드는거야

:

tileMap->initWithTMXFile("TileMap.tmx"); 
this->background = tileMap->layerNamed("Background"); 

누군가가 무슨 일이 일어나고 있는지 알고 있습니까?

제발, 도와 주시겠습니까?

답변

5

좋아, 문제를 발견했습니다. 이론 그냥 약간의 :

  • 포인터가 초기화 된 적이없는 수 :

    EXC_BAD_ACCESS 코드 = 2 포인터가 손상되어 있기 때문에이 일어날 수 있다는 것을 의미한다.

  • 배열의 경계를 초과하여 포인터가 실수로 덮어 쓸 수 있습니다.
  • 포인터가 잘못 캐스팅되어 쓰여진 개체의 일부일 수 있습니다.
  • 위의 항목 중 하나라도 다른 포인터가 손상되어이 포인터 또는이 포인터 근처를 가리킬 수 있으며이 포인터를 사용하면이 포인터가 손상됩니다 (기타 등등).

그래서 제 경우에는 initWithTMXFiletileMap 포인터를 초기화하기에 충분하다고 생각했지만 잘못되었습니다. 해결책은 initWithTMXFile보다 먼저 먼저 tileMap을 초기화해야한다는 것입니다. 올바른 코드 블록은 다음과 같습니다.

this->tileMap = new CCTMXTiledMap(); 
this->tileMap->initWithTMXFile("TileMap.tmx"); 
this->background = tileMap->layerNamed("Background"); 
this->addChild(tileMap); 

도움이되기를 바랍니다.

관련 문제