v2.0 无法获取 tiledmap 对象的自定义属性了

const obj = tiledMap.getObjectGroup("start_points").getObjects()[0];
obj.getProperty("threshold");

>TypeError: obj.getProperty is not a function

这 obj 的类型就真的是 Object,一个 function 也没有
升级指南里好像没说把这些 function 也干掉了啊


还有个问题就是以前 v1.9 的时候对象有个 offset 属性是以 左上角 为原点的。v2.0 变成了 x 和 y 两个属性,它们又是以 左下角 为原点。而且 y 这属性是 number 类型但 x 属性是 string 类型的

#蛋疼

应该有其他替代的办法,我这边也出现类似情况,正在想办法

兄弟
const obj = tiledMap.getObjectGroup(“start_points”).getObjects()[0];
obj.threshold;

这样试试

不行,没这属性

y:number, x: string 这是何解?

不知道,顶

x是字符串 y是number 这太搞笑了233333333333333333333333333

  1. 你这个 x 是字符串是怎么出现的?
  2. obj.threshold 应该可以获取到这个属性的

麻烦给个 demo 复现一下吧,谢谢~

顶就完了

刚才试了试,obj.threshold 确实可以获取到这个属性,之前是我疏忽了不好意思。

不过 obj.x 类型确实是字符串。
此外除了x,自定义属性类型设置也没用。tiled编辑器里自定义属性类型设的int,获取出来也是 string 类型

Demo: TiledTest.zip (293.4 KB)

哦还有 obj 的 x y 坐标原点跟之前版本不一样了,tiled编辑器里坐标是以 左上角 为原点的。v2.0 却是以 左下角 为原点

let layerPass = this.tilemap.getLayer("box_pass100");
  let show = layerStop.getProperty("show");

v2.0.1获取失败 1.10.1可以获取
layerStop.show 也失败
this.tilemap下的属性是可以获取
是我获取方式有问题吗

var tiledMapObj = cc.find(“Canvas/bg/TiledMap”);
var tiledMapCom = tiledMapObj.getComponent(cc.TiledMap);
let group = tiledMapCom.getObjectGroup(“test”);
var obj = group.getObjects().objs[0];
cc.log("type: " + obj._properties.mon_type);

中间增加个_properties 就可以访问了

let gid = map.getLayer(" layer").getTileGIDAt(x, y)
map.getPropertiesForGID(gid)

具体看文档