0

我在 Flash As3 中制作 9 个立方体的立方体。但是,由于索引整体添加到舞台的顺序,我无法正确旋转它。首先我创建了 6 个正方形的立方体,然后是 9 个立方体的墙,最后是 3 个墙的立方体。一切都很好,但是当我将它向左旋转时,立方体的顺序被颠倒了,它破坏了整个构图。我知道我可以根据轮换动态更改索引,但这将是一项非常麻烦的工作。有什么想法我怎么能做得更好?

这是实际模型: http ://test.mrowa.topdivision.pl/kostka/3DTest.html

4

1 回答 1

1

如果您使用 Flash 的显示列表,则必须根据精灵的 z 对精灵进行排序。

这是一些代码,可以DisplayObjectContainer根据 z 位置对 a 的子项进行排序,每当某个对象更改其位置时调用它。

public function sortChildren(container:DisplayObjectContainer):void
{
    var objects:Vector.<DisplayObject> = new Vector.<DisplayObject>;

    for (var i:int = 0; i < container.numChildren; i++) 
    {
        objects.push(container.getChildAt(i));
    }

    objects.sort(sortCompare);

    var index:int = 0;
    for (var j:int = 0; j < objects.length; j++) 
    {
            index = container.getChildIndex(objects[j]);
            if (index != j)
                container.setChildIndex(objects[j], j);         
    }
}

private function sortCompare(a:DisplayObject, b:DisplayObject):int
{
    return (a.z - b.z);
}

您可以将objects成员移动为类成员,并在向舞台添加/删除项目时向其添加/删除项目,这样您就不必在每次调用此函数时填充整个数组。

于 2013-04-06T13:37:41.230 回答