AS3 - 使用Matrix3D对象重新排序显示

时间:2009-11-03 18:25:34

标签: actionscript-3 animation 3d z-order

我正在处理大约20个在3D空间中移动的物体。 Adobe建议“使用Matrix3D对象重新排序显示”:

  1. 使用Transform对象的getRelativeMatrix3D()方法获取子3D显示对象的相对z轴。

  2. 使用removeChild()方法从显示列表中删除对象。

  3. 根据显示对象的相对z轴值对显示对象进行排序。

  4. 使用addChild()方法以相反的顺序将子项添加回显示列表。

  5. 大。如果物体不移动那就没问题。但是如果有动画发生并且一个物体在z空间中出现在另一个物体前面呢?根据显示列表中的位置显示对象,而不是根据它们的z顺序显示。在动画时如何使对象尊重z次序(如果对象A的z值小于对象B,则使对象A出现在对象B的前面)?显然,您无法在动画期间清除显示列表。

1 个答案:

答案 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);
    }
}