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

标签 c++ ios cocos2d-x

我尝试在 Cocos2D-X 中使用瓦片 map 创建游戏,但出现以下错误:

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

我正在以这种方式创建瓦片 map :

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

有人知道这是怎么回事吗?

请问,你能帮帮我吗?

最佳答案

好的,我找到问题了。只是一点理论:

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

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

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

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

希望对你有帮助。

关于c++ - Cocos2D-X - 初始化 CCTMXTiledMap 时出现 EXC_BAD_ACCESS(代码=2,地址=0x0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363513/

相关文章:

objective-c - 延迟加载 UIView 直到 Mapkit 加载

java - 在 Eclipse Helios 中使用 C++ 的 Android Cocos2DX

iphone - 在 iPhone 上加载 PNG 图像失败,但在模拟器中工作

c++ - 结交类友并继承它有什么用?

c++ - Open-CV - 加载不正确

c++ - 如何使用 std::shuffle 随机排列具有唯一指针的 vector ?

ios - UIView滑动过渡淡出

ios - MKAnnotationView pin.image 显示的图像不正确

ios - Cocos2d-x CClabelTTF 隐形

c++ - C++ 中的同时覆盖和重载