问题
- laya中如何实现动态游戏物体的前后遮挡
概述
example.jpg
如上图,场景中根据角色Y坐标,动态调整物体层级
实现
- 将 动态层级的游戏物体 创建在同一个显示节点(sprite)下
- 如
layoutElementsInLayer
中对所有需要排序的物体根据y坐标进行排序,并修改节点的索引 - 分帧调用
layoutElementsInLayer
/**
* 游戏物体动态层级处理
* @param root
*/
private function layoutElementsInLayer(root:Sprite){
var elements:Array = [];
var len:uint = root.numChildren;
for (var i:int = 0; i<len; i++){
elements.push(root.getChildAt(i));
}
if(elements.length > 1){
// 根据y坐标进行排序
elements.sort(function (a:*, b:*):int {
return a.y - b.y;
})
while ( len-- ){
var display:Sprite = elements[len];
if(root.getChildIndex(display) != len){
root.setChildIndex(display, len);
}
}
}
}