Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 swapChildrenAt、setChildIndex、swapChildren所有复制MC';s_Actionscript 3 - Fatal编程技术网

Actionscript 3 swapChildrenAt、setChildIndex、swapChildren所有复制MC';s

Actionscript 3 swapChildrenAt、setChildIndex、swapChildren所有复制MC';s,actionscript-3,Actionscript 3,第一次在这里张贴海报 这个问题在我的机器上可以通过Flash Professional CS5中Actionscript 3.0中的一个新的.fla项目重现。这是我原始问题的编辑,包含更多信息 我正在进行一个项目,加载外部SWF,并在实例名称中搜索匹配的关键字,即“拖放”和“拖放”,以识别movieclip匹配,然后将事件侦听器附加到这些MC,其中包含D&D事件侦听器和代码 具体问题是嵌套在动态加载的外部SWF文件中的Movieclips的深度切换 我遇到的问题是具体的命令: swapChild

第一次在这里张贴海报

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

我正在进行一个项目,加载外部SWF,并在实例名称中搜索匹配的关键字,即“拖放”和“拖放”,以识别movieclip匹配,然后将事件侦听器附加到这些MC,其中包含D&D事件侦听器和代码

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

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

swapChildrenAt、setChildIndex、swapChildren、removeChild/addChild。我用同样的重复问题尝试了这四种方法。让我解释一下

单击可拖动的MC时,它将移动到动态加载SWF的顶部索引,因此它在该SWF中的所有其他索引之上都是可见的。问题是,尝试这些命令中的任何一个都会复制MC。结果是:

鼠标按下事件触发: 目标MC的指数记录为“2”,我们将切换到的指数为“20”(SWF的最大指数) 对目标MC父对象调用setChildIndex:MC.parent.setChildIndex(MC,(MC.parent.numChildren-1)) MC移动到索引20,然后在其先前所在的层上创建另一个MC实例(索引2)

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

网上也有类似的帖子提到同样的问题,但没有解决方案

类似的帖子也提到了同样的重复问题,但我发现没有一个解决方案能解决我的问题

最后一点,如果我注释掉index swap语句,代码可以完美地工作,MC只需停留在较低的z索引上,而不是在顶部。不幸的是,这不是一个解决方案,因为我没有构建外部SWF

谢谢和问候
Cameron

一种绕过setChildIndex/swapChildrenAt/etc的快速方法,如果在您的框架中可能的话,就是删除child并添加child(您的mc),这将保证它是最高的


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

一种绕过setChildIndex/swapChildrenAt/etc的快速方法,如果在您的框架中可能的话,就是删除child并添加child(您的mc),这将保证它是最高的


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

是的!我对“重复MCs”也有同样的问题。当您需要在时间线中的级别或“帧”之间移动时,这尤其令人不安

我想做的就是让我拖动的MC(目标)始终位于其他可拖动MC的顶部

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


哦,还给我,
getNextHighestDepth()

是的!我对“重复MCs”也有同样的问题。当您需要在时间线中的级别或“帧”之间移动时,这尤其令人不安

我想做的就是让我拖动的MC(目标)始终位于其他可拖动MC的顶部

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


哦,还给我,
getNextHighestDepth()

谢谢你的建议。我试过:var tempParent:MovieClip=MovieClip(drag.parent);tempParent.removeChild(拖动);tempParent.addChild(拖动);但是运气不好,这种方法也会留下一个副本。如果你需要更多关于这个项目的信息,尽管问吧。如果你刚离开孩子,它还在舞台上吗?复制让我很困惑。是的,复制也让我很困惑,我们应该看到一些其他的代码,因为我刚刚用你的代码进行了设置和示例,我没有看到任何复制。删除MC会导致留下一个复制,同时删除原始MC。我有一个加载程序代码,可以提供一些见解,我将编辑问题以反映这一点。如果您跟踪您的
swf.numChildren
var-swf:MovieClip=MovieClip(loadEvent.currentTarget.content);addChild(swf)为确保只附加一份副本,请执行此操作?谢谢您的建议。我试过:var tempParent:MovieClip=MovieClip(drag.parent);tempParent.removeChild(拖动);tempParent.addChild(拖动);但是运气不好,这种方法也会留下一个副本。如果你需要更多关于这个项目的信息,尽管问吧。如果你刚离开孩子,它还在舞台上吗?复制让我很困惑。是的,复制也让我很困惑,我们应该看到一些其他的代码,因为我刚刚用你的代码进行了设置和示例,我没有看到任何复制。删除MC会导致留下一个复制,同时删除原始MC。我有一个加载程序代码,可以提供一些见解,我将编辑问题以反映这一点。如果您跟踪您的
swf.numChildren
var-swf:MovieClip=MovieClip(loadEvent.currentTarget.content);addChild(swf)为了确保您只附加了一个副本,请执行该操作?我们还可以看到您的OnFragmouseUp函数吗?我还没有时间测试该函数,但为了清晰起见添加了。我们还可以看到您的OnFragmouseUp函数吗?我还没有时间测试该函数,但为了清晰起见添加了。您好,我后来更详细地回复了这个问题,这里有一个链接:答案是我加载的子SWF有两帧,我没有调用childSWF.stop()命令,用这个命令修复了它。嗨,我真的回复了这个问题