AS3自定义深度控制

时间:2011-05-11 05:16:55

标签: actionscript-3 depth

我正在尝试创建一种控制动画片段深度的方法,其中movieclip显示在另一个上面,这样我就可以将动画片段的深度设置为任意数字,并且它们将以更高的值显示高于较低值。

我在想创建一个MovieClipDepth类,它扩展了 MovieClip ,增加了属性深度,和扩展的Container类 DisplayObjectContainer 所有对象都将放在

之内

当添加子项时,Container类将覆盖addChild方法更新子显示顺序

  

我需要帮助的是如何根据孩子重新排序   他们的深度值?

2 个答案:

答案 0 :(得分:2)

正如您可以在下面的评论中看到的那样,有几种方法可供选择。

但实际上,你问“将动画片段的深度设置为任何数字”并不能真正在AS3中完成。如果我是对的,你可以在AS2中这样做,所以......

......怎么回事......

_root.createEmptyMovieClip("mc", -1000);

_root.createEmptyMovieClip("mc1", 1);
_root.createEmptyMovieClip("mc2", 10);

工作,但在AS3中不起作用。在AS3深度从0开始,你不能强迫DisplayObject坐在从零开始不连续的水平上。

所以容器中3个动画片段的深度'只能使用这些值:0,1,2。

例如,深度不能是负数。

现在,如果你想建立一个自定义深度管理器,你可以这样做,但你必须考虑这些事实。

所以说,你可以创建虚拟深度。

所以我想,你可以覆盖addChildAt方法。目前,如果你给出一个错误的数字:负数,或者高于孩子的数量,flash会回复错误:

RangeError: Error #2006: The supplied index is out of bounds.

所以mc.addChildAt(newchild, -1000)给出了一个恐怖。

但是通过覆盖该方法,您可以制作一个技巧,因此您可以将深度存储在数组中。您可以存储任何数字,然后根据AS3的需要转换该顺序。

就像将深度与添加的子项配对一样,按深度对数组进行排序,然后根据顺序管理子项。

如果您有更多问题,请随时提出,希望这可以让您更接近解决方案。

答案 1 :(得分:0)

我建议你看看这个教程:

网站http://www.flashandmath.com/上的深度管理方法之旅。我认为你不是新手。

链接是这样的: http://www.flashandmath.com/intermediate/depths/index.html