AS3深度排序与额外

时间:2013-08-29 12:52:50

标签: actionscript-3 depth

我最近在我的程序中遇到了深度排序的问题。基本上,我对每一帧进行排序。排序应该注意“深度”,实际上是scaleX和scaleY(它们总是一样,所以我只是看着scaleX),所以那些具有更大scaleX的元素应该高于那些有较低但也要检查的元素。 y值然后排序。换句话说:在scaleX上排序然后在Y上排序。任何建议我怎么能写这样的排序函数?

编辑: 我写了这个函数,如果两个显示对象不在同一个“深度”(scaleX),那么它们就会相互交换。

public static function sortEverythingInContainer(container:DisplayObjectContainer, fromIndex:int = 1) {
        var i : int = 0;
        var j : int = 0;
        var n : int = container.numChildren;
        var child1:DisplayObject;
        var child2:DisplayObject;
        for (i = fromIndex; i < n; ++i){
            j = i;

            child1 = container.getChildAt(j);
            child2 = container.getChildAt(j - 1);
            while (j > fromIndex-1 && (child1.scaleX < child2.scaleX?false:child1.y < child2.y)) {
                container.swapChildren(child1, child2);
                --j;
                if (j <= fromIndex-1)
                    break;
                child1 = container.getChildAt(j);
                child2 = container.getChildAt(j - 1);  
            }

        }
    }

解决方案:
我必须通过为循环创建2来排序两次,首先根据Y进行排序,然后进行缩放。     在这里输入代码

1 个答案:

答案 0 :(得分:1)

如果我理解你,你可以使用这样的东西:

 arr.sortOn("scaleX",  Array.NUMERIC); 
 arr.sortOn("y",  Array.NUMERIC); 

参考:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7fa4.html