swapChildrenAt,setChildIndex,swapChildren都是复制MC的

时间:2011-02-17 22:24:25

标签: actionscript-3

这里的第一次海报。

在我的机器上使用Flash Professional CS5中的Actionscript 3.0中的新.fla项目可以重现此问题。这是我原始问题的编辑,包含更多信息。

我正在开发一个加载外部SWF的项目,并通过实例名称搜索匹配的关键字,即'drag'和'drop'来识别movieclip匹配,然后将事件监听器附加到包含D& D事件的MC听众和代码。

具体问题是切换动态加载的外部SWF文件中的Movieclips的深度。

我遇到问题的具体命令是:

swapChildrenAt,setChildIndex,swapChildren,removeChild / addChild。我已经尝试了所有四个同样的重复问题。让我解释一下。

单击可拖动的MC时,它会移动到动态加载的SWF的顶部索引,因此它在该SWF中的所有其他内容上方可见。问题是尝试任何这些命令都会复制MC。会发生什么:

MOUSE_DOWN事件触发: 目标MC的索引记录为'2',我们将切换到的索引是'20'(SWF的最大索引) 在目标MC父级上调用setChildIndex:mc.parent.setChildIndex(mc,(mc.parent.numChildren-1)) MC移动到索引20,然后在其先前所在的层(索引2)

创建MC的另一个实例

使用附加到舞台的EVENT.ADDED_TO_STAGE侦听器确认此副本,以捕获添加到舞台的MovieClip类型的每个对象。我已经检查了SWF以确认没有重复的MovieClip,这些痕迹也证实了这一点。

网上有类似的帖子提到同样的问题而没有解决方案。

类似的帖子提到了相同的重复问题,但没有人找到我认为可以解决的解决方案。

http://www.kirupa.com/forum/showthread.php?t=359452 http://board.flashkit.com/board/showthread.php?t=775200 http://forums.adobe.com/thread/199983

作为最后一点,如果我注释掉索引交换语句,代码可以与MC完美地保持在较低的z-index而不是在顶部。不幸的是,由于我没有构建外部SWF,因此无法解决这个问题。

谢谢和问候 卡梅伦

2 个答案:

答案 0 :(得分:0)

绕过setChildIndex / swapChildrenAt / etc的一种快捷方法,如果可能,在你的框架中,将是removeChild和addChild(你的mc),这将保证它是最高的。

只是一个建议。希望它有所帮助。

答案 1 :(得分:0)

是的!我一直遇到“重复MC”的问题。当您需要在时间线中的级别或“帧”之间移动时,这尤其令人不安。

我想做的就是让MC(目标)拖动到其他可拖动的MC之上。

有一件事是确定导致它的原因是这段代码:setChildIndex( target, numChildren - 1 );

哦,请回复,getNextHighestDepth(); !!!