FlashAS学习:讲解MovieClipDepth(深度)的问题

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

大家对duplicateMovieClip()应该不会陌生吧,它用来复制MC。duplicateMovieClip()有个参数----Depth,它就是用来控制新复制出来的MC的深度,数字越大,代表越顶层。

举个例子:

舞台上有1个MC1,在帧上写

mc1.duplicateMovieClip("mc2",2);

mc1.duplicateMovieClip("mc3",20);

再加上这几句,为了让复制出来的MC2 MC3不重叠在一起

mc2._x += 25;

mc3._x += 50;

mc2._y += 50;

mc3._y += 100;

如下图:mc3在mc2上,mc2在mc1上

下面讲一下决定Depth的数字

新手可能面对过这种问题,根据图层的位置,原本的MC是被其他图形覆盖着的,但新复制出来的MC总是覆盖着时间轴任何图层上的所有图形。无论Depth的数字有多小,甚至是负数,新复制出来的MC总是在时间轴任何图层上的所有图形之上,如下图:

红色MC覆盖了蓝色上新复制出来的MC的Depth是负数

新复制出来的仍然覆盖在红色之上

Flash深度共分为3个区域:

● 时间轴区(-16384~-1)

主要用于放置Flash IDE编辑时的图象、MC等,此区域的MC不可以用AS删除,但 可以用AS动态创建MC到这里。

● 动态区(0~1048575)

允许执行时用AS动态创建或删除MC。

● 保留区(1048576~2130690045)

允许执行时用AS动态创建MC,但创建后不可以删除。超出2130690045这个深度的MC是无法用duplicateMovieClip()或attachMovie()创建的。

由于时间轴区和保留区里的MC都不可以动态删除,如要删除,可以先用swapDepths()交换到动态区才删除。

★ 控制MC深度的方法

有3种方法使新复制出来的MC在红色之下。

1)Flash6支持一个getDepth()的指令,可以知道MC的Depth,先将红色的MC命名为red,蓝色的命名mc1 ,在帧上写:

trace("mc1depth:"+mc1.getDepth());

trace("reddepth:"+red.getDepth());

按CTRL+回车测试影片,结果她们的Depth原来是:

mc1depth:-16383

reddepth:-16380

现在知道了就好办了,只要duplicateMovieClip()时Depth设定在-16383~-16380间就可以让新复制出来的MC放在红色之下了,比如这么写:

mc1.duplicateMovieClip("mc2",-16382);

mc1.duplicateMovieClip("mc3",-16381);

测试结果:

新复制出来的MC在红色的MC下了。。。。。

如果将Depth设定得很小,新复制出来的MC是否可以在所有图形之下呢?这又不是,因为-1638* 是flash中Depth支持的最低数字,低过它的MC是不可能存在的,例如:

mc1.duplicateMovieClip("mc2",-20000);

mc1.duplicateMovieClip("mc3",-30000);

两个新的MC都不会产生.....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航