我正在处理大约20个在3D空间中移动的物体。 Adobe建议“使用Matrix3D对象重新排序显示”:
使用Transform对象的getRelativeMatrix3D()方法获取子3D显示对象的相对z轴。
使用removeChild()方法从显示列表中删除对象。
根据显示对象的相对z轴值对显示对象进行排序。
使用addChild()方法以相反的顺序将子项添加回显示列表。
大。如果物体不移动那就没问题。但是如果有动画发生并且一个物体在z空间中出现在另一个物体前面呢?根据显示列表中的位置显示对象,而不是根据它们的z顺序显示。在动画时如何使对象尊重z次序(如果对象A的z值小于对象B,则使对象A出现在对象B的前面)?显然,您无法在动画期间清除显示列表。
答案 0 :(得分:0)
它与adobe的文档实际上相同......并且它非常适合移动物体。
最简单的方法,所以你有一些代码引用,并且假设你有一个数组中的所有3d对象,将会是这样的:
function zSort(objects:Array) {
objects.sortOn("z", Array.DESCENDING | Array.NUMERIC); // sort the array on the "z" property
for each(var clip:DisplayObject in objects) { //loop the array and add the childs in the corrected order...
addChild(clip);
}
}