AS3 关于Depth的问题

As2里面里有关于深度的函数方法 SwapDepths,getNextHighestDepth.但AS3里没有这样的函数来处理.所以AS2 转AS3 关于深度很多朋友不适应.

AS3里的深度其实处理起来并不复杂,不过得弄清楚机制.

对于已经在舞台存在的对象,不管你文档原来有多少个层,AS3只会看对象的数量,每多一个对象,层的序数自动加1.
比 方说,你在Flash里面有3个层,第一层(最低的),有1个MC,叫AAAA,和一些用绘图工具画的东西,第二层,也有一个MC ,叫BBBB,同样也有一些绘图工具画的东西。第三层,有个MC叫CCCC .好了,那么不管你第一层 用绘图工具画了什么东西,有多少个组,组的层叠情况怎样,统统都只属于一个 Shape 对象,AAAA是一个MC对象,那么第一层就有2个对象了,他们分别获得0和1的序数顺序,第二层也是,无论用绘图工具画了什么也被视作一个Shape对 象,还有一个 BBBB的MC对象,他们获得,2和3序数,第三层CCCC获得 4。那么这个文件就一共有5个对象。 所谓深度自动分配,就是中间不会出现空的索引,都是连续的序数来的。不象AS2那样可以随便指定深度。 AS3要卸载任何显示对象,都可以用removeChild来从显示列表中删除。但removeChild不会把对象完全销毁。可以用AddChild来 重新加载他。

所以实际上AS3里已经把深度变成索引的概念. DisplayObject 对象也就是 MovieClip, Sprite 里提供一些函数了,改变或者获取这个索引.

例如:

getChildAt:DisplayObject
返回位于指定索引处的子显示对象实例。

getChildIndex:int
返回 DisplayObject 的 child 实例的索引位置。

setChildIndex:void
更改现有子项在显示对象容器中的位置。

swapChildren:void
交换两个指定子对象的 Z 轴顺序(从前到后顺序)。

swapChildrenAt:void
在子级列表中两个指定的索引位置,交换子对象的 Z 轴顺序(前后顺序)。

removeChildAt:DisplayObject
从 DisplayObjectContainer 的子列表中指定的 index 位置删除子 DisplayObject。

你可能感兴趣的:(Flash)