Flash 交换深度后移除电影剪辑
我在ActionScript 2中有一些代码类似于下面的片段(Flash 交换深度后移除电影剪辑,flash,actionscript-2,Flash,Actionscript 2,我在ActionScript 2中有一些代码类似于下面的片段(Item是一个MovieClip): 我认为问题很清楚。交换深度后,我无法删除Temp(否则可以正常工作) 我还尝试了以下方法(但无效): 关于如何摆脱Temp有什么想法吗 请使用以下给定代码进行尝试: _root.createEmptyMovieClip("Temp",_root.getNextHighestDepth()); _root.Item.swapDepths(_root.Temp); removeMovieClip(
Item
是一个MovieClip):
我认为问题很清楚。交换深度后,我无法删除Temp
(否则可以正常工作)
我还尝试了以下方法(但无效):
关于如何摆脱
Temp
有什么想法吗 请使用以下给定代码进行尝试:
_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth());
_root.Item.swapDepths(_root.Temp);
removeMovieClip(_root.Temp);
如果您正在使用ActionScript代码创建动态movieclip。然后您必须使用removeMovieClip(XXXXXX)代码>函数而不是XXXXXX.removeMoveiClip()代码>
注意:-XXXXXX是MoveiClip的实例引用,它是使用ActionScript 2.0代码在运行时创建的
原因:“removeMovieClip()仅适用于动态创建的MovieClip”我找到了Temp
MovieClip不朽背后隐藏的原因。
与之交换的MovieClip项
是在时间线中手动创建的。因此,在交换后,Temp
在闪存不支持动态删除符号的范围内
如果我在Temp
和Item1=Item.duplicateMovieClip(“Item1”,someDepth)之间交换深度
,removeClip()
会工作的 正如我所说,问题发生在swapDepths()函数之后。如果没有这一行,XXXXXX.removeMovieClip()工作得很好。是的,但在交换之后,它在AVM1中出现了显示列表问题。所以它会发生。因此,您必须使用removeMovieClip(_root.Temp);在交换之前,它将工作。您必须学习数组、ActionScript2.0中的显示列表和MovieClip子对象管理。我已经更新了实际问题,作为上面的答案。事实上,在问这个问题之前,我已经试过了所有可能的removeMovieClip()形式!
depth = Item.getDepth();
_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth());
_root.Item.swapDepths(_root.Temp);
_root.getInstanceAtDepth(depth).removeMovieClip(); // Doesn't work !
_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth());
_root.Item.swapDepths(_root.Temp);
removeMovieClip(_root.Temp);