flash层解析

 
[1b], [level,depth,]全解析[/1b]
By snow(http://www.7dev.net) 参考了old9同志的意见和自在幻想(Fictiony的帖子)
帮助中[1b]
[color="#ff0000"]_global[/color]
[/1b]的说明
 标识符;创建全局变量、对象或类。
例如,您可以创建公开为全局动作脚本对象的库,此库非常类似于 Math 或 Date 对象。与时间轴声明或局部声明的变量和函数不一样,全局变量和函数只要未被内部范围中具有相同名称的标识符遮蔽,则它们对于 SWF 文件中的每个时间轴和范围均是可见的。
 
[color="#ff0000"][1b]_root[/1b][/color]
的说明
属性;指定或返回指向根影片时间轴的引用。
如果影片有多个级别,则根影片时间轴位于包含当前正在执行脚本的级别上。
例如,如果级别 1 中的脚本计算 _root,则返回 _level1。  
[1b]
[color="#ff0000"]_level[/color]
[/1b]的说明
标识符;对 _levelN 的根时间轴的引用。
必须在使用 loadMovieNum() 将 SWF 文件加载到 Flash Player 中以后,才可使用 _level 属性来定位这些 SWF。还可使用 _levelN 来定位由 N 所指定级别处的已加载 SWF 文件。  
 加载到 Flash Player 实例中的初始 SWF 文件会自动加载到 _level0。_level0 中的 SWF 文件为所有随后加载的 SWF 文件设置帧频、背景色和帧大小。然后 SWF 文件堆叠在处于 _level0 的 SWF 文件之上的更高编号级别中。  
您必须为每个使用 loadMovieNum() 加载到 Flash Player 中的 SWF 文件分配一个级别。您可按任意顺序分配级别。如果您分配的级别(包括 _level0)中已经包含 SWF 文件,则处于该级别的 SWF 文件将被卸载并替换为新的 SWF 文件。
[1b]
[color="#ff0000"]depth[/color]
[/1b]的说明(by snow,非官方文档)
depth值特指MC的深度,depth越大,MC越在上面;制作动画时画出来的MC它的depth值一定小于0,而SWF运行时动态产生的MC的depth值则一定大于0,从而保证了ActionScript操纵而产生的MC位置是在上面的;    
[1b]_root和_level[/1b]
新建一个影片,它的_root就是它本身的根影片时间轴,运行时它所在的层级是level0,可以载入其他的影片到其他层级;如level1等,这些影片会同时运行, 仔细看上面level的说明,"将 SWF 文件加载到 Flash Player 中以后,才可使用 _level 属性来定位这些 SWF",注意"[1b]定位[/1b]"这个词,曾经有人打过一个形象的比方,层级就象并排从上到下的许多抽屉,层级(level)值越大的动画越在上面;对于某个MC而言,它的"最高级领导"就是_root,_level根本不是对MC谈论的概念, 它只表明了SWF之间的上下关系,好,趁热打铁,我们来看下面---------  
[1b]_level和Depth[/1b]
不同点
level和depth根本不具有可比性,level是针对SWF,而depth是针对MovieClip的;  
相同点
1,正如上面所说的,level表示了SWF之间的上下关系,类似的是,depth也表明了一种上下关系,就是MC之间的,MC的depth值越高,它就越在上面
2,比如:同一level和depth上,放入新的对象时,都会挤掉原来的. (by 自在幻想)  
[1b]layer与depth [/1b]
layer只是一个编辑FLA时才存在的概念,当输出SWF以后,layer已经形神俱灭了,MC之间只靠depth来确定上下位置,靠坐标来确定前后左右的位置;  
[1b]另一种眼光看_root[/1b]
_root是个MC的证据
1,_root变成了MC(说法特别不规范,有助于理解就行了).
_root在一个影片中一副老大的样子,好象大得不得了,会一直是这样的吗?
不;可以使用loadMovie()把一个SWF加载到另一个SWF(名为firstSWF)中的一个MC中,假设加载SWF(名为mySWF),到一个名为myMC的MC中,此时原来的MC已经被干掉了,mySWF已经变成了myMC, mySWF的_root已经指向firstSWF的根影片时间轴了.(请自行构造例子测试); 这下怎么操纵load进来的SWF的各种状态呢,就不用说了吧? (操纵myMC这个MC即可)
  相应地,如果加载某个SWF到levelN(N>0),那么在原SWF中可以把load进来的这个SWF当成一个名为_levelN的MC来操纵。  
证据2, 测试如下语句:trace(typeof _root); 会输出"movieclip", 悄悄告诉你哦,trace(typeof _level0),也输出"movieclip";  
之所以强调这种提法,为什么呢,只可意会不可言传.     基本含义帮助中已经说明得很清楚了,下面是一点补充:
1,昨天一个朋友问到的,设动画有两个场景(scene),在两个场景中第一帧分别放一同名的MC,通过trace发现它们的深度是一样的.   下面我们重点说明一下这个问题: 其实这个depth值,是针对某一帧这个生存周期的概念.当播放到第一场景中的第一帧时,不能谈论第一个场景中的第一帧中的MC的depth,就象关公不可能战秦琼一样.  
本文转自:http://www.5uflash.com/flashjiaocheng/Flashjichucaozuo/21.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值