我在Flash As3中制作9个立方体的立方体。然而,我不能正确地旋转它,因为索引的顺序,整个添加到舞台。首先我创建了6个正方形的立方体,然后是9个立方体的墙,最后是3面墙的立方体。这一切都很好,但是当我将它向左旋转时,立方体的顺序颠倒了,这会破坏整个构图。我知道我可以很容易地根据旋转来改变索引,但这将是一项非常繁重的工作。有什么想法可以让我做得更好吗?
这是实际的模型:http://test.mrowa.topdivision.pl/kostka/3DTest.html
发布于 2013-04-06 21:37:41
如果您使用的是Flash的显示列表,则必须根据它们的z对子画面进行排序。
下面是一些代码,可以根据DisplayObjectContainer的子对象的z位置对其进行排序,每当某个对象改变其位置时,就调用此代码。
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成员移动为类成员,并在每次向舞台添加项目/从舞台中删除项目时向其中添加项目或从中删除项目,这样就不必在每次调用此函数时填充整个数组。
https://stackoverflow.com/questions/15851345
复制相似问题