AS3:将一个物体带到每个帧的前面

时间:2015-03-12 18:54:49

标签: actionscript-3 flash

我有一个UI对象,当然应始终保持在所有其他对象的前面。为此,我决定在每一帧中再次销毁并添加它,如下所示:

removeChild(UI_Indicator)
addChild(UI_Indicator)

但是,在它的区域中创建的对象仍然是它的顶部。这怎么可能呢?我也试过了常见的

UI_Indicator.parent.setChildIndex(UI_Indicator,UI_Indicator.parent.numChildren - 1)

但它也不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你没有用removeChild()摧毁任何东西,你只是停止显示它。 removeChild()在这里甚至不需要。 addChild()很高兴地接受DisplayObject已经是您呼叫它的DisplayObjectContainer的孩子并重新添加孩子(到顶部)

  1. 而不是每一帧重新addChild(),放置你的 显示列表上的allways-on-top DisplayObject,然后创建 一个DisplayObjectContainer,例如Sprite,然后添加它 在您的指标后面。现在将所有其他DisplayObjects添加到 那个容器。这有一个缺点,需要你添加 容器的一切。功能会在您完成后立即中断 偶然addChild()常规方式。这个思想过程 导致下面的第二个解决方案。
  2. DisplayObjectContainer的子类中包含 指示符,覆盖与显示列表交互的方法 (添加/删除孩子等)所有可能导致某些事情发生的事情 掌握你的指标。这让你完全掌控 当某个东西被添加到这个容器时会发生什么。您可以 为了简单起见,要么采用解决方案1:委托所有人 方法调用内部容器Sprite,或者,如果你不喜欢 有一个内部容器,没有它,并确保它 没有其他孩子比你的指标被分配最高 指数。您可以创建一个额外的方法来添加永远在线的孩子,例如addTopChild()