【问题标题】:Cocos2D-X - EXC_BAD_ACCESS (code=2, address=0x0) when initializing a CCTMXTiledMapCocos2D-X - 初始化 CCTMXTiledMap 时的 EXC_BAD_ACCESS (code=2, address=0x0)
【发布时间】:2013-05-03 16:25:13
【问题描述】:

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

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

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

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

有人知道发生了什么吗?

拜托,你能帮帮我吗?

【问题讨论】:

    标签: c++ ios cocos2d-x


    【解决方案1】:

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

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

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

    所以,就我而言,我认为 initWithTMXFile 足以初始化 tileMap 指针,但我错了。解决方案是必须先初始化initWithTMXFiletileMap之前的事情。所以,正确的代码块是:

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 2014-09-19
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      相关资源
      最近更新 更多