初始化CCTMXTiledMap时Cocos2D-X - EXC_BAD_ACCESS(代码= 2,地址= 0x0)

jjo*_*dan 0 c++ ios cocos2d-x

我正在尝试使用瓷砖地图在Cocos2D-X中创建一个游戏,我收到以下错误:

setContentSize(CCSizeZero)中的EXC_BAD_ACCESS(代码= 2,地址= 0x0 ); 方法CCTMXTiledMap :: initWithTMXFile(const char*tmxFile)

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

tileMap->initWithTMXFile("TileMap.tmx");
this->background = tileMap->layerNamed("Background");
Run Code Online (Sandbox Code Playgroud)

有人知道它发生了什么吗?

拜托,你能帮帮我吗?

jjo*_*dan 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);
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.