0

我正在尝试使用瓷砖地图在 Cocos2D-X 中创建游戏,但出现以下错误:

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

我正在以这种方式创建瓷砖地图:

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

有人知道发生了什么吗?

拜托,你能帮帮我吗?

4

1 回答 1

5

好的,我找到了问题所在。一点理论:

EXC_BAD_ACCESS code=2表示指针已损坏,这可能是因为:

  • 指针可能永远不会被初始化。
  • 指针可能被意外覆盖,因为您超出了数组的边界。
  • 指针可能是对象的一部分,该对象被错误地转换,然后被写入。
  • 以上任何一项都可能破坏了一个不同的指针,该指针现在指向或靠近该指针,并且使用该指针会破坏这个指针(依此类推)。

所以,就我而言,我认为这initWithTMXFile足以初始化tileMap指针,但我错了。initWithTMXFile解决方法是,tileMap必须先初始化before 。因此,正确的代码块是:

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

我希望它有所帮助。

于 2013-05-03T16:25:13.247 回答