2008年2月18日星期一

removeMovieClip()失效问题

这几天用flash,总结出不少问题,flash还真tm让人喷血,下面这个问题google了半天才找到


喜欢用this.getNextHighestDepth();这样搞进来的会出现removeMovieClip()失效问题
近量少用this.getNextHighestDepth().

其实,在FLASH中,深度共划分为三个区域:
●时间轴区(-16384→-1),这里主要用于放置在FLASH中,手动创建的图象、影片剪辑、按钮等,此区域中的剪辑不可以用AS删除,但可以用AS动态的创建剪辑到这里。其实-16384就是_root的深度值,我们可以用trace(_root.getDapth())获得。
●动态区(0→1048575),这里允许AS动态的创建和删除影片剪辑。
●保留区(1048576→2130690045),这里允许用AS动态的创建剪辑,但创建后无法删除。
●超出以上三区后,就无法再用duplicateMovieClip()和attachMovie()动态创建剪辑了,但仍可以用createEmptyMovieClip()动态创建,只是创建后,也无法删除。
●除了动态区,其它区的剪辑都无法删除,可以先用swapDepths()把要删除的剪辑交换到动态区,然后再删除。

还有下面的情况,据说也不行,没有测试。

Case1:

你肯定想不到,同样的代码,只是要attachMovie的MC里有个ComboBox就会导致不能removeMovieClip()

其中 box1 和 box2 按钮是attach的 box 元件

你可以看到按了box1后再按box2, attach的box MC的深度变成了-32779,并且removeMovieClip不了

而同样的代码,在box3和box4按钮上不会发生,box3和box4是attach的box2元件

如果成功 remove ,MC本身和深度都应该是 undefined 才对

Case2:

库里的按钮元件attach了之后居然不能removeMovieClip,无论它的深度是多少 -_-

所以要用按钮需要删除的话,得把按钮放在mc里再attach这个mc

Case3:

这个应该不用多说了吧,深度小于 0 大于 1048575 的用不了removeMovieClip()


Pasted from <http://www.lionar.com/read.php?24>

没有评论: