2006/07/06 | Movie Clip 的深度问题(转载)
类别(Flash&AS2) | 评论(1) | 阅读(127) | 发表于 09:28
Movie Clip 的深度问题

"朝闻道夕死可矣",最近越来越深的体会了这句话。人就是为了追求真理而活,一旦悟透了真理,人生也就没有任何遗憾了。这样的心情很符合解决技术问题后的那种满足感。

最近遇到了一个不大不小的问题,发现手动拖到时间轴上的 mc 不能在脚本中删除,一时搞不懂是为什么。后来了解到 mc 的深度是有学问的,一共可分为 3 个大块,分别是:

1、时间轴区(深度范围 -16 384 ~ -1)

这个区域是用来放置在设计器中生成的那些元素,这个区域里的 mc 是不能用脚本删除的。但是脚本创建的 mc 可以制定到这个深度范围中,这样也就不能删除了。

这就可以解答好多现象,比如脚本创建的 mc 一般总会在设计器创建的之上,因为你死也不会想到深度制定在小于 -16 384? 并且大于???? -16 390(低于 -16 38x ?的深度不存在,不会被创建)的范围内才可以放到设计器创建的 mc 下面。并且我前面的问题也就不难解释了。

解决删除问题也不难,只要把那个深陷泥沼的 mc 换出来,再杀掉就 ok 了。具体点就是先是用 swapDepths() 方法来个乾坤大挪移,再用 removeMovieClip() 接上一际独孤九剑,于是世界清静了。

(注:在用户卡片的制作中我用到了 swapDepths(),用来解决单击后的卡片会放置在最上层。)

现在想想,以前做的那些 Banner 甚至没有 0 的突破,所有 mc 的 Depth 都是负数,呵呵。

2、动态区(深度范围 0 ~ 1 048 575)

这是个脚本可以肆意妄为的世界,可以直接使用独孤九剑决定任何 mc 的生死,不用费时费力的乾坤大挪移了。

3、保留区(深度范围 1 048 576 ~ 2 130 690 045)

我想这个区域的存在目的就是为了确保深度超过 1 048 575 后,创建的 mc 仍然有地方储存。要想删除这区域里的 mc 的话,还是要先拖到动态区去,然后是砍头还是腰斩随便你。(把动态区形容的有点像刑场,呵呵)

这就是 Flash 深度框架的所以然,总体上感觉还是挺牛的,用好了就可以呼风唤雨,用不好就只能到处受气。

总之就是这么点事,怕以后会忘,所以记在这里。忘了解决的方法是小,忘了闻道时的喜悦就遗憾至极了。
0

评论Comments

日志分类
首页[116]
Flash&AS2[56]
FMS[3]
Flex&AS3[5]
Asp[5]
My Works[13]
My Life[34]