这里的第一次海报。
在我的机器上使用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,因此无法解决这个问题。
谢谢和问候 卡梅伦
答案 0 :(得分:0)
绕过setChildIndex / swapChildrenAt / etc的一种快捷方法,如果可能,在你的框架中,将是removeChild和addChild(你的mc),这将保证它是最高的。
只是一个建议。希望它有所帮助。
答案 1 :(得分:0)
是的!我一直遇到“重复MC”的问题。当您需要在时间线中的级别或“帧”之间移动时,这尤其令人不安。
我想做的就是让MC(目标)拖动到其他可拖动的MC之上。
有一件事是确定导致它的原因是这段代码:setChildIndex( target, numChildren - 1 );
哦,请回复,getNextHighestDepth();
!!!