[]TiledMap,ignore图块的bug

TiledMap源码中,onJsonComplete方法里会解析所有图块信息,里面会读取ignore属性,如果为true,则忽略该图块的加载。
后续会根据图块加载所有纹理。
 
但由于加载好的纹理是push进数组。会导致MapLayer的drawTileTexture方法在读取显示纹理时,调用TiledMap.getTexture方法传入的index和加载好的纹理所在的数组位置对不上。取出了别的纹理。
 
例如,正常不忽略图块的情况下,加载好的的纹理数组是[x,y,z]。如果忽略了x,则变成[y,z]。后续取纹理时,本来想取y得变成是取了z。
 
下图是ignore的部分的源码。
Screen_Shot_2018-07-18_at_7.16_.05_AM_.png

 
下图是getTexture的方法
Screen_Shot_2018-07-18_at_7.32_.03_AM_.png

 
这里是通过data的数据获取纹理的地方
Screen_Shot_2018-07-18_at_7.32_.19_AM_.png

 
总的来说是ignore属性目前不能使用,使用会导致读取纹理错误。不确定能否表达清楚,有疑问欢迎补充
 
已邀请:

Aar0n

赞同来自:

取忽略后的纹理是按忽略后的index取还是按照忽略前的纹理顺序取的?已经忽略了,那之前的被忽略的纹理就不该占index的数值,
如果不是这样的情况,能否提供demo查看一下实际情况

要回复问题请先

商务合作
商务合作