七彩课堂[FLASH动画教程系列]
对象的层叠位置深度
[学习目标]:通过学习掌握深度的概念,并且掌握与深度相关的操作,比如,确定一个实例的深度,深度的交换等。
上讲我们给大家说明了flash的2个坐标体系,主时间轴和元件的坐标体系,这样对于大家在后面的用as创建MC等例子中,定位MC会很有必要,或许有的朋友感觉说的太罗嗦了,好象我们在这里介绍的不是as2.0,在这里呢,我们是一步步的学,有了这些基础,我们再进一步去掌握自定义类以及组件的使用。下面我们就看 看如何来标识对象的层叠位置?
flash中的对象除了在平面上的坐标位置外,另外还有个立体的Z轴,那就是对象的层叠位置,比如我们看表演,画面有2个演员,靠近你的一个在演唱,离你的视线远点的一个在弹琴伴奏,但他们都在同一个舞台上表演给你看,这种层 叠关系,就是深度了。
一、深度概念
深度具体就是些数字,比如1、2、3、100000...。flash中用这些数字来表示当前对象的层叠位置。
前边教程"flash的两种状态的对比-编辑时和运行时"我们讲过,在编辑状态,我们有2个方法来控制对象的层叠关系,一是通过拖动图层的上下关系,二是通过在同一图层上多个对象的排列层次的改变。在运行时,或者动态创建的对象我们不能用鼠标操作了,但我们可以通过指定对象的深度实现。所以这个深度就是对象在显示时的遮盖截系。
二、深度的范围
在编辑时,放在上面的会遮盖住放在下面的。这种上下关系,如果用深度表示,深度值大的靠前,深度值小的靠后。深度大的会遮盖住深度小的对象。所以我们看见的就是深度大的对象。 影片剪辑的深度值的范围是从 -16384 到 1048575。
为了更好的理解深度,我们看下深度的区域。 区域深度范围特征
时间轴区-16384 到 -1主要用于放置Flash 编辑时的对象,且对象不可用脚本移除。
动态区0到1048575实现运行时的动态创建、动态访问和动态移除
扩展区1048576到2130690045实现运行时的动态创建、动态访问,但不支持使用脚本移除对象。
1、时间轴区:用于放置编辑环境下时间轴中的对象。在编辑环境下,最底层的对象放置到区域的最深处:-16384。在一般情况下会从-16383这个深度开始,Flash依次向较高深度放置时间轴中的对象。并且这个区域的对象不可用脚本移除的。
2、动态区 :这个区是我们最需要的,也是我们可以通过as可以控制的。大家看这个区是从0开始的,符合我们的习惯吧,所以在这个区域可以放置那些可以动态创建和移除的对象。这里是你开发的自由区,如果在时间轴区的对象,你可以先进行交换深度到这里,然后你想怎么做都可以了,杀了它也是允许的了。
3、扩展区:这个特别的,级别高,你可以创建对象,但你不可以移除,所以你要想移除,就要跟保留区一样,先交换深度到动态区,然后再杀掉。所以这个区域做个存储对象的仓库是不错的(比如一些不可见的对象象声音)。
看到这里应该知道我们一般用的深度都是从0开始的了吧。
特殊情况,Flash 在使用createEmptyMovieClip()方法创建的空MC时,深度的分配上没有限制,深度可以在-999999999999以下或是999999999999以上。我们不去管这个,利用好动态区就可以了。
三、深度的可比性
从上面我们可以看出,我们常使用的深度范围就在动态区。在使用过程中。不同的时间轴可以使用相同的深度值的,但他们间是没有可比性的,所以,深度也是以时间轴为标准的。
四、深度相关的方法
下面列出与深度有关全局函数或方法: 方法全局函数功能描述返回值
MovieClip.
attachMovie() 从库中创建一个电影剪辑实例。被创建的电影剪辑的引用
MovieClip.
createEmptyMovieClip() 创建一个空的电影剪辑被创建的电影剪辑的引用
MovieClip.
createTextField() 创建一个文本框无返回值
MovieClip.
duplicateMovieClip()duplicateMovieClip() 创建一个电影剪辑的拷贝被创建的电影剪辑的引用
Button.
getDepth() 返回电影剪辑、按钮、文本框的深度深度数值
MovieClip.
getDepth()
TextField.
getDepth()
MovieClip.
getInstanceAtDepth() 返回占据指定深度的电影剪辑指定深度下电影剪辑的引用
MovieClip.
getNextHighestDepth() 返回最高的可用深度深度数值
MovieClip.
removeMovieClip()removeMovieClip()移除动态创建的电影剪辑无返回值
MovieClip.
swapDepths() 交换两个电影剪辑的深度无返回值
另外DepthManager是一个专门对深度进行管理的类,利用它的方法我们可以管理任何组件或影片剪辑的深度(包括 _root)分配。把它的方法一起列出,在这里要大家有个了解,现在不要求你去掌握的。 方法描述
DepthManager.
createChildAtDepth() 在指定深度处创建指定元件的子级。
DepthManager.
createClassChildAtDepth() 在该指定深度处创建指定类的对象。
DepthManager.
createClassObjectAtDepth() 在特殊最深剪辑中的指定深度处创建指定类的实例。
DepthManager.
createObjectAtDepth() 在最深剪辑中的指定深度处创建一个对象。
DepthManager.
setDepthAbove() 将深度设置到指定实例之上。
DepthManager.
setDepthBelow() 将深度设置到指定实例之下。
DepthManager.
setDepthTo() 将深度设置为最深剪辑中的指定实例。
五、操作例子
下面我们通过例子,大家自己操作,帮助你理解深度。
要求:通过按钮完成深度的取得、交换和MC的删除
步骤:
1、新建flash文档。
2、新建MC元件fang,随便画个放块就可以了。
3、新建MC元件fang_mc,拖入上面的元件fang,创建运动动画。
4、新建MC元件yuan_mc,在上面随便画个圆,然后打开库,右键选中yuan_mc,选择:"连接...",打开连接属性对话框,选中第一项(此时默认同时选中第四项),在标识符一栏内填写:"yuan_mc"作为这个MC的链接名。这个很关键的,如果要动态利用库中的元件,必须给个链接名的。
5、回到主场景。
6、新建图层fang_mc,把MC元件fang_mc拖入,并给实例名字:fang_mc。
7、新建图层msg,在上面建立4个动态文本框,分别对于4个变量:fangdath_txt、btn_txt、root_txt、yuan_txt,这个4个变量是用来分别显示fang_mc的深度,第一个按钮的深度、主时间轴的深度、动态引用的yuan1_mc的深度。
8、新建图层btn,从公共库拖入4个按钮,分别给它们实例名称:getDepth_btn、attachMovie_btn、swapDepths_btn、removeMovieClip_btn。用这4个按钮控制深度操作。
9、新建图层ActionScript,加as:
//按钮getDepth_btn的函数
getDepth_btn.onPress = function() {
_root.fangdath_txt = fang_mc.getDepth();
_root.btn_txt = this.getDepth();
_root.root_txt = _root.getDepth();
};
//按钮attachMovie_btn的函数
attachMovie_btn.onPress = function() {
_root.attachMovie("yuan_mc", "yuan1_mc", 20);
yuan1_mc._x = 100;
yuan1_mc._y = 200;
_root.yuan_txt = yuan1_mc.getDepth();
};
//按钮swapDepths_btn的函数
swapDepths_btn.onPress = function() {
fang_mc.swapDepths(20);
_root.fangdath_txt = fang_mc.getDepth();
};
//按钮removeMovieClip_btn的函数
removeMovieClip_btn.onPress = function() {
fang_mc.swapDepths(1000);
_root.fangdath_txt = fang_mc.getDepth();
fang_mc.removeMovieClip();
};

上面的代码不是很难懂的,我就不解释了,通过练习,你可以改改代码,理解深度这个概念
 
信息推荐
资讯中心 | 电子商务 | 搜索营销 | 设计学院 | 中医养生 | 养生保健 | 节日祝福 | 民俗文化 | 奇闻趣事
建站知识 | 人世百态 | 网站导航 | 传统节日 | 搜索热点 | 星座运势 | 趣闻轶事 | 祝福的话 | 短信大全
© 2023 QicaiSpace.Com