0

タイル マップを使用して Cocos2D-X でゲームを作成しようとすると、次のエラーが発生します。

setContentSize(CCSizeZero);行のEXC_BAD_ACCESS (コード=2、アドレス=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初期化する必要があることです。したがって、正しいコード ブロックは次のとおりです。

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

お役に立てば幸いです。

于 2013-05-03T16:25:13.247 に答える