在flash创作环境中我们对层概念已经比较熟悉了深度和层概念比较接近每个在舞台上对象都有它自已深度深度数字大盖住比它小对象这就象上面层遮住下面层样我们可以把MC放到-16384 至 1048575任深度上但某深度上原来已有个对象时那么新放入对象将替换原来对象这可能会遇到个问题当我用使用 attachMovie(MovieClip.attachMovie 思路方法)、duplicateMovieClip(MovieClip.duplicateMovieClip 思路方法)或 createEmptyMovieClip(MovieClip.createEmptyMovieClip 思路方法)在运行时创建影片剪辑时始终要指定MC深度应该用个什么深度值呢?如果指定深度值上已有MC了会不会将原来覆盖了呢?为了解决这个问题flash 为我们提供了getNextHighestDepth思路方法
getNextHighestDepth思路方法:
MC这个思路方法将返回下个可用深度值更好理解就是当前最大深度值加1因此用这个深度值MC将在最上面
比如:this.createEmptyMovieClip("my_mc",this.getNextHighestDepth);
getInstanceAtDepth思路方法:这个思路方法将返回某个特定深度值上MC例子
比如要确定当前最大深度值MC可以用如下代码:
var zddepth = this.getNextHighestDepth-1; //获得当前最大深度值
var my_mc:MovieClip =this.getInstanceAtDepth(zddepth);
getDepth思路方法:返回某个MC深度
比如要返回MCmy_mc深度:
var mymcdepth = my_mc.getDepth;
swapDepths思路方法:交换两个MC深度值如果MC正在执行补间则补间会停止
比如有两个MC:mc1和mc2现在要交换这两个MC深度
mc1.swapDepths(mc2);
下面通过个练习来熟悉本节课所介绍内容
效果如下:用鼠标点击挡在下面图片这张图片将移到最上面层来
制作思路方法:
1.新建flash文档导入若干图片
2.将这些图片分别做成MC大小随意但宽高不应超过200或可再小些在库中分别右击这些MC点击“连接”在弹出面板中在为ActionSpript导出前打钩在标识框内输入:pic1.第 2个MC则输入pic2,以此类推
3.回到主场景打开动作面板输入下列代码:(注意下面代码是以5张图片为例写如果你不是5张图片则应作相应修改详细介绍说明看后面代码分析)
for(i=1;i<6;i){
this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth);
var pic_mc = eval("pic"+i+"_mc");
pic_mc._x = 150 +random(200);
pic_mc._y = 100 + random(200);
}
pic1_mc.onRelease = function{
var zddepth =_root.getNextHighestDepth-1;
var zd_mc:MovieClip =_root.getInstanceAtDepth(zddepth);
this.swapDepths(zd_mc);
}
pic2_mc.onRelease = function{
var zddepth = _root.getNextHighestDepth-1;
var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);
this.swapDepths(zd_mc);
}
pic3_mc.onRelease = function{
var zddepth = _root.getNextHighestDepth-1;
var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);
this.swapDepths(zd_mc);
}
pic4_mc.onRelease = function{
var zddepth = _root.getNextHighestDepth-1;
var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);
this.swapDepths(zd_mc);
}
pic5_mc.onRelease = function{
var zddepth = _root.getNextHighestDepth-1;
var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);
this.swapDepths(zd_mc);
}
代码分析:
首先用个for循环将库中图片加载到舞台上循环次数是你图片元件数量下面i<6中6用你图片元件数量加1替换我这里是5张图片所以我用6
for(i=1;i<6;i){
接下来加载这些图片元件这里加载深度我们用到了 this.getNextHighestDepth思路方法图片加载后指定图片x,y坐标在定范围内随机位置这个范围应根据图片元件大小来确定不能太小太小了上面图片会完全盖住下面图片也不能太大太大了则不能产生重叠效果总的就是要即要产生重叠效果又不能完全盖住
this.attachMovie("pic"+i,"pic"+i+"_mc",this.getNextHighestDepth);
var pic_mc = eval("pic"+i+"_mc");
pic_mc._x = 150 +random(200);
pic_mc._y = 100 + random(200);
现在图片已加载到舞台上了并产生了不完全重叠效果接下来就是实现点击图片让该图片移到最上层所以用到图片MConRelease事件以第张图片为例:
pic1_mc.onRelease = function{
在这个事件执行中首先确定最上面图片深度值上面介绍了getNextHighestDepth返回是最大深度值加1那么最大深度值自然就是getNextHighestDepth减1了
var zddepth = _root.getNextHighestDepth-1;
有了最大深度值后就可以确定最上面图片是哪张了:
var zd_mc:MovieClip = _root.getInstanceAtDepth(zddepth);
最后将这张图片和最大深度那张图片交换深度那这张图片深度值就最大了当然也就在最上面了:
this.swapDepths(zd_mc);
第张图片点击动作代码就完成了下面写第 2张图片代码每张图片点击事件中代码是完全样所以复制第张图片代码粘帖到第张图片代码下面将第句pic1_mc.onRelease = function{中pic1改为pic2,就行了
以后以此类推直到完成所有图片点击代码
最新评论