在帧之间移动时对象更改层?

Posted

技术标签:

【中文标题】在帧之间移动时对象更改层?【英文标题】:Object changing layer when going between frames? 【发布时间】:2015-02-18 23:57:24 【问题描述】:

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

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

在 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。

【讨论】:

以上是关于在帧之间移动时对象更改层?的主要内容,如果未能解决你的问题,请参考以下文章

约束对象以防止对象更改大小时移动它们

纹理和渲染缓冲区是不是在帧缓冲区对象上共享相同的空间?

tkinter - 使用按钮在帧之间来回切换

对属于同一对象的一组点进行卡尔曼滤波器?

OpenGL - 每次单击菜单时移动的对象

在上下文之间移动对象时 iOS coredata objectWithID 中的错误