[]TiledMap,mapLayer追加精灵无法显示,已参考完已有问题解答,无法解决

例子中,我试图向maplayer添加sprite,总是无法显示,给TiledMap.MapSprite()中添加是可以的
1. 向TiledMap.MapSprite()中添加
1.png


3.png


2. 向mapLayer中添加,并已经将其他3个mapLayer(1,2,4)设置不可见,也确定从stage->sprite->mapLayer(第三个)->sprite都设置为可见,黑色是
Laya.stage.bgColor

2.png


4.png


环境是1.7.10beta


 
已邀请:

cuixueying

赞同来自:

不支持直接在mapLayer中添加显示对象,建议你换种方式实现吧!

nazgul

赞同来自:

我也是1.7.10,今天正好在研究这个问题,然后正好解决了,查了半天官方的js源代码搞了个半懂,原来地图里有个_showGridList存放子对象,每次重绘的时候会把_showGridList覆盖_childs,所以还要在_showGridList里添加,原来的mapLayer.addChild倒不是必须了,具体代码如下
mapLayer._showGridList.push(sp);
如果你用的ts的话还会报错说_showGridList不存在,需要在libs/LayaAir.d.ts里,找到class MapLayer extends Sprite这一行,在下面加上一行代码:
class MapLayer extends Sprite {
_mapData: Array<any>;
/**
* @private
*/
_gridSpriteArray: Array<any>;
_showGridList: Array<any>; //这行是我新加的
......
}

要回复问题请先

商务合作
商务合作