c++ - Cocos2d-x TiledMap,调用getLayer()获取碰撞层时返回nullptr?

标签 c++ cocos2d-x null-pointer

几个小时以来,我一直在为 null 指针而苦苦挣扎!当我在cocos2d-x中使用getLayer()方法从分块 map 中获取图层时发生了(使用Tailed Map Editor编辑tailed map)。

map = TMXTiledMap::create("map/map1.tmx");
map->setAnchorPoint(Vec2(0.5, 0.5));
map->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2 - 40));
this->addChild(map, 0, 100);
collidable = map->getLayer("collide")
collidable->setVisible(false);

程序没有在我的尾图中找到“碰撞”层(它是一个平铺层)。但是,它确实存在于 TMX 文件中:

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" tiledversion="1.1.5" orientation="orthogonal" renderorder="right-down" width="24" height="18" tilewidth="40" tileheight="40" infinite="0" nextlayerid="14" nextobjectid="2">

 <tileset firstgid="1" name="Background" tilewidth="40" tileheight="40" tilecount="7" columns="7">
  <image source="mapItems/background.png" width="280" height="40"/>
 </tileset>
 <tileset firstgid="8" name="tiles" tilewidth="40" tileheight="40" tilecount="16" columns="8">
  <image source="mapItems/tiles.png" width="320" height="80"/>
 </tileset>
 <tileset firstgid="24" source="mapItems/collide.tsx"/>
 <layer id="5" name="background" width="24" height="18">
  <data encoding="base64" compression="zlib">
   ...(some code)
 </layer>
 <layer id="11" name="collide" width="24" height="18">
  <properties>
   <property name="collidable" value="true"/>
  </properties>
  <data encoding="base64" compression="zlib">
   ...
  </data>
 </layer>
 <layer id="6" name="bricks" width="24" height="18">
  <data encoding="base64" compression="zlib">
   ...
  </data>
 </layer>
 <layer id="7" name="tops" width="24" height="18">
  <data encoding="base64" compression="zlib">
   ...
  </data>
 </layer>
</map>

另外,我在getLayer()方法中设置断点,程序遍历找到除碰撞层外的所有层。谁能告诉我如何处理这个问题?

最佳答案

好吧,我终于解决了这个问题(发生后 4 小时)...尽管我什至不知道为什么。 解决方案是编辑 collide.tsx 文件。我试着读了一下,发现了一句话:

 <image source="collide.png" trans=ff00ff width="40" height="40"/>

这个“trans=”看起来很奇怪...所以我删除了它。然后问题就解决了。

关于c++ - Cocos2d-x TiledMap,调用getLayer()获取碰撞层时返回nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50355988/

相关文章:

c++ - 如何原子地比较和递增?

c++ - 在 Visual C++ 6 中显示文件夹选择对话框

android - 在 Windows 8 上的 cocos 2dx 游戏开发环境设置中出现错误

c - 当我们将 "if(ptr==NULL)"用作整数指针 ptr 时,NULL 指针是否隐式转换为类型 (int*)?

我们可以减去 NULL 指针吗?

c++ - 从二进制文件 C++ 中读取值时出错

c++ - 如何检测 std::integer_sequence 中特定数字的索引?

android - 使用许多不同种类的表情符号和语言(除了 ascii,但仍然有效的修改后的 utf-8)时,调用 C++ JNI NewStringUTF 会使 android 应用程序崩溃

ios - Applovin 无法在 iOS 应用程序中启动

java - jtable编辑时将 ""带入数据库