AS3:将一个对象放在每一帧的前面
AS3: bringing an object to front each frame
我有一个 UI 对象,当然应该始终将其放在所有其他对象的前面。为此,我决定在每一帧中销毁并再次添加它,如下所示:
removeChild(UI_Indicator)
addChild(UI_Indicator)
但是,尽管如此,在其区域中创建的对象仍然位于其之上。这怎么可能?我也尝试了常见的
UI_Indicator.parent.setChildIndex(UI_Indicator,UI_Indicator.parent.numChildren - 1)
但是也行不通。有什么建议吗?
你没有用 removeChild()
破坏任何东西,你只是停止显示它。 removeChild()
在这里甚至不是必需的。 addChild()
愉快地接受了一个 DisplayObject
,它已经是你调用它的 DisplayObjectContainer
的 child,并且 re-adds 又是 child(到顶部)
- 不要在每一帧都重新
addChild()
,而是将你的
allways-on-top DisplayObject
显示列表一次,然后创建
a DisplayObjectContainer
,例如说 a Sprite
并添加它
在你的指标后面。现在将所有其他 DisplayObjects
添加到
那个容器。这样做的缺点是需要您添加
一切都到容器。一旦你的功能中断
不小心 addChild()
常规方式。这个思考过程
导致下面的第二个解决方案。
- 在您
DisplayObjectContainer
的子类中,其中包括
指标,覆盖与显示列表交互的方法
(add/remove children等)所有可能导致某些事情的人
掌握指标。这使您可以完全控制
将某些东西添加到此容器时发生了什么。你可以
为了简单起见,要么合并解决方案 1:委托所有
方法调用内部容器 Sprite
或者,如果你不喜欢
有一个内部容器,没有它并确保
除了您的指标之外,没有其他 child 被指定为最高
指数。您将创建一个额外的方法来添加 always-on-top child,例如 addTopChild()
。
我有一个 UI 对象,当然应该始终将其放在所有其他对象的前面。为此,我决定在每一帧中销毁并再次添加它,如下所示:
removeChild(UI_Indicator)
addChild(UI_Indicator)
但是,尽管如此,在其区域中创建的对象仍然位于其之上。这怎么可能?我也尝试了常见的
UI_Indicator.parent.setChildIndex(UI_Indicator,UI_Indicator.parent.numChildren - 1)
但是也行不通。有什么建议吗?
你没有用 removeChild()
破坏任何东西,你只是停止显示它。 removeChild()
在这里甚至不是必需的。 addChild()
愉快地接受了一个 DisplayObject
,它已经是你调用它的 DisplayObjectContainer
的 child,并且 re-adds 又是 child(到顶部)
- 不要在每一帧都重新
addChild()
,而是将你的 allways-on-topDisplayObject
显示列表一次,然后创建 aDisplayObjectContainer
,例如说 aSprite
并添加它 在你的指标后面。现在将所有其他DisplayObjects
添加到 那个容器。这样做的缺点是需要您添加 一切都到容器。一旦你的功能中断 不小心addChild()
常规方式。这个思考过程 导致下面的第二个解决方案。 - 在您
DisplayObjectContainer
的子类中,其中包括 指标,覆盖与显示列表交互的方法 (add/remove children等)所有可能导致某些事情的人 掌握指标。这使您可以完全控制 将某些东西添加到此容器时发生了什么。你可以 为了简单起见,要么合并解决方案 1:委托所有 方法调用内部容器Sprite
或者,如果你不喜欢 有一个内部容器,没有它并确保 除了您的指标之外,没有其他 child 被指定为最高 指数。您将创建一个额外的方法来添加 always-on-top child,例如addTopChild()
。