首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3D Flash中的实例顺序

3D Flash中的实例顺序
EN

Stack Overflow用户
提问于 2013-04-06 21:07:48
回答 1查看 92关注 0票数 0

我在Flash As3中制作9个立方体的立方体。然而,我不能正确地旋转它,因为索引的顺序,整个添加到舞台。首先我创建了6个正方形的立方体,然后是9个立方体的墙,最后是3面墙的立方体。这一切都很好,但是当我将它向左旋转时,立方体的顺序颠倒了,这会破坏整个构图。我知道我可以很容易地根据旋转来改变索引,但这将是一项非常繁重的工作。有什么想法可以让我做得更好吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-06 21:37:41

如果您使用的是Flash的显示列表,则必须根据它们的z对子画面进行排序。

下面是一些代码,可以根据DisplayObjectContainer的子对象的z位置对其进行排序,每当某个对象改变其位置时,就调用此代码。

代码语言:javascript
复制
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成员移动为类成员,并在每次向舞台添加项目/从舞台中删除项目时向其中添加项目或从中删除项目,这样就不必在每次调用此函数时填充整个数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15851345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档