我在舞台上有一堆影片剪辑,有些则嵌套在其他影片中,我想在开始拖动时将其中1个放在舞台上的其他东西之上。任何人都知道如何在父母等之上获得嵌套的动画片段?
答案 0 :(得分:4)
舞台上其他一切:
stage.addChild(target);
来自AS3 doc的警告:
命令stage.addChild()可能会导致已发布的SWF出现问题 文件,包括安全问题以及与其他加载的SWF的冲突 文件。 Flash运行时实例中只有一个Stage,没有 您加载到运行时的SWF文件数量。所以,一般来说, 对象不应该直接添加到舞台上。唯一的 Stage应包含的对象是根对象。创建一个 DisplayObjectContainer包含显示中的所有项目 名单。然后,如有必要,将DisplayObjectContainer实例添加到 舞台。
答案 1 :(得分:4)
你可以有一个顶层&底层,只要您想在其他所有内容上添加子项,只需将子项添加到顶层即可。这样您就不需要计算父位置是什么,只需将此图层保留在顶部以用于特定目的。
var topLayer:Sprite = new Sprite(); var bottomLayer:Sprite = new Sprite(); var childMc:MovieClip; // the mc you want to have on top //somewhere in your code... childMc.addEventListener(MouseEvent.MOUSE_DOWN , childMcMouseDownListener ); addChild( bottomLayer ); addChild( topLayer ); //add everything to the bottom layer //leave the topLayer empty until you add the child mc //add the following code in your MouseDown Listener function childMcMouseDownListener(event:MouseEvent ):void { topLayer.addChild( event.currentTarget ); }
答案 2 :(得分:0)
假设,Container是您的父movieClip,它有很多子项。现在,您的target和currentTarget属性取决于侦听器附加的对象以及嵌套动画片段的数量。在我的情况下,Container是你的父movieClip有两个或更多的孩子。
Container.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
public function pickUp(param1:MouseEvent) : void
{
var objectToDrag = param1.target;
Container.setChildIndex(param1.target,Container.numChildren-1);
objectToDrag.startDrag(true);
}