我在Flash As3中制作了9个立方体的立方体。但是由于索引的顺序整个添加到舞台,我无法正确旋转它。 首先我创建了6个正方形的立方体,然后是9个立方体的墙,以及3个墙的最终立方体。 一切都很好,但是当我向左旋转时,立方体的顺序被颠倒,它会破坏整个构图。我知道我可以根据轮换改变指数,但这将是一个工作的loooooooot。 任何想法我怎么能更好地做到这一点?
答案 0 :(得分:1)
如果您使用Flash的显示列表,则必须根据它们的z对精灵进行排序。
以下是一些代码可以根据z位置对DisplayObjectContainer
的子项进行排序,只要某个对象改变其位置就调用它。
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
成员移动为类成员,并在向舞台添加/删除项目时向其添加/删除项目,这样您就不必每次都填充整个数组这个函数被调用。