2013-05-03 53 views
0

我試圖創建的Cocos2D-X遊戲與瓷磚的地圖,我提示以下錯誤:當(代碼= 2,地址=爲0x0):的Cocos2D-X - EXC_BAD_ACCESS初始化CCTMXTiledMap

EXC_BAD_ACCESS(code = 2,address = 0x0)在行setContentSize(CCSizeZero);該方法CCTMXTiledMap :: initWithTMXFile(爲const char * tmxFile)的

我用這種方法創建的瓦片地圖:

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

有人知道它是怎麼回事?

請問,你能幫助我嗎?

回答

5

好的,我發現了這個問題。只要一點點的理論:

EXC_BAD_ACCESS碼= 2意味着該指針已損壞,這可能發生,因爲:

  • 指針可能從來未初始化。
  • 由於您超出了數組的範圍,指針可能會被意外寫入。
  • 指針可能是不正確鑄造並寫入的對象的一部分。
  • 以上任何一種情況都可能破壞了一個不同的指針,該指針現在指向或接近此指針,並使用該指針破壞此指針(依此類推)。

所以,就我而言,我認爲initWithTMXFile已經足夠初始化tileMap指針,但我錯了。解決的辦法是在initWithTMXFile之前的第一件事,tileMap必須被初始化。所以,正確的代碼塊是:

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

我希望它有幫助。