论坛快速导航: 2009年素材区 矢量素材 图片素材 网页模板 原创作品 佳作欣赏 网页设计专区 摄影之家 PhotoShop CorelDraw Illustrator | 在线繁体字转换翻译工具 WAP RSS
返回简洁设计网首页
最新教程 推荐教程 热门教程
当前位置: 简洁设计网 > 设计教程 > 媒体动画 > as进阶 > 正文
as进阶---影片剪辑深度交换函数的实现
<序:好长时间没有写教程了,做网站太累了,写个教程换换气>

由于做的网站有一些应用要用到模仿窗口的深度交换,所以才进行了一些研究,

也可以通过本教程学习或复习一下数组的初级和中级应用。

Flash MX 2004也提供了几种用于深度交换的

函数,如 MovieClip.getNextHighestDepth(), MovieClip.getDepth(), MovieClip.swapDepths()等等

但是要对于一定区间深度的深度交换getNextHighestDepth函数可能就不太好用了。

例如要影片剪辑的深度有范围限制,

像下面描述的例子:(均为影片剪辑)

a1_mc,a2_mc,a3_mc.......a100_mc 深度:1,2,3,....100

b1_mc,b2_mc,b3_mc.......b100_mc 深度:101,102,103,....200

c1_mc,c2_mc,c3_mc.......c100_mc 深度:201,202,203,....300

现在要对b系列的进行频繁的深度交换,但是不能超出101~199这个深度范围,如果用getNextHighestDepth可能就会

干涉到c系列的深度值。

即使影片剪辑中包含有输入文本等东东,本例点击后也会触发交换函数而进行深度交换。

原理:当MOUSE在一些层叠的影片上点击时,利用hitTest()函数进行捕获这些层叠的影片,

再对这些影片进行深度排序,

得到其中的最大的深度的影片,因为深度大就在上面,盖往了深度小的,

所以这个深度最大的将成为所有(也有这些层叠之外的)的影片中深度最大的。

例如:(下面均是影片和其深度)

m1,m2,m3,m4,m5,m6

4, 1, 3, 5, 2, 6

可以知道m6是在最上面的。现在我点了一下m3,所以m3就应该是6,而m6就应当是第二深的,为5

深度3之前的(m2,m5)都不动,其它的要重新排列

排后如下:

m1,m2,m3,m4,m5,m6

3, 1, 6, 4, 2, 5

这样就保持了原来的(除m3)深度顺序,如m6要在m4,m1,m5,m2之上。要是直接用

MovieClip.getNextHighestDepth()和MovieClip.swapDepths()来实现

m6就要在m1,m4的下面了,正常来说是不正确的

先建立一个550*400的swap.fla的影片,背景任意,帧速最好选为40,如下图:

按此在新窗口浏览图片

拖一个按钮组件入主场景,用于产生新窗口的点击事件,如下图:


按此在新窗口浏览图片

属性如下:

按此在新窗口浏览图片

在按钮上加入下面的动作,如图:

按此在新窗口浏览图片

有人会问createWin()是什么,其实她就是以后要用到的窗口生成函数,这里为了方便,就先把按钮上的工作都

做完了,以后就不用再管按钮啦。

[1] [2] [3] [4] 下一页

点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
版权所有 简洁设计网 [www.jianjie8.com] 您电脑的分辨率是 像素
Copyright 2008-2015 Www.Jianjie8.Com All Rights Reserved
陇ICP备05003399号