将movieclip放在其他一切之上

时间:2010-10-17 20:45:45

标签: actionscript-3

我在舞台上有一堆影片剪辑,有些则嵌套在其他影片中,我想在开始拖动时将其中1个放在舞台上的其他东西之上。任何人都知道如何在父母等之上获得嵌套的动画片段?

3 个答案:

答案 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);
}