在帧之间进行对象更改层?

时间:2014-12-20 02:21:51

标签: actionscript-3 flash actionscript adobe flash-cs6

当帧发生变化时,我有一个物体的孩子留在场景中。所以我gotoAndStop(2);而物体仍在那里。但是,当我回到第一帧时。该对象位于最低层,尽管我最初使用addChildAt(character,1)添加它;我认为这会将它添加到第一层?任何人都知道如何解决这个问题,即尽管改变帧,仍然将影片剪辑对象保留在顶层?谢谢。

1 个答案:

答案 0 :(得分:0)

在AS3 / Flash中,最底层是0。所以做addChildAt(character, 1)会让你的角色成为底层的第二层。 addChildAt(character, 0)会使它成为底层/背层。

如果要将其设为最顶层,请执行以下任一操作:

addChild(character); //this is the shortest amount of code

addChildAt(character, numChildren-1); //the is exactly the same as above

setChildIndex(character, numChildren-1); //this is also the same but requires the character already be present on the display list

如果您的角色来自时间轴(例如,不是通过代码创建),后者(setChildIndex)可能是首选。原因是,如果您通过代码更改在时间轴上创建的内容的父母身份,则在时间轴上不再出现时它不会消失。

如果你想要一种强迫某些东西始终处于最顶端的方法,你可以按照以下方式做点什么:

this.addEventListener(Event.ADDED, bringToTop);

function bringToTop(e:Event):void {
    setChildIndex(character, numChildren-1);
}

这样做,只要将任何其他对象添加为this的子对象,它就会将字符设置为最顶层/ z-index。