AS3:将一个对象放在每帧的前面



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

removeChild(UI_Indicator)
addChild(UI_Indicator)

但是,尽管如此,在其区域中创建的对象仍然位于其顶部。这怎么可能?我也尝试了常见的

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

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

你没有用removeChild()破坏任何东西,你只是停止显示它。 这里甚至不需要removeChild()addChild()愉快地拿起一个已经是你调用它的DisplayObjectContainer的孩子的DisplayObject,并再次重新添加孩子(到顶部)

  1. 与其addChild()每一帧都这样做,不如放置您的在显示列表中DisplayObject一次顶部,然后创建一个DisplayObjectContainer,例如一个Sprite并添加它在您的指示器后面。现在将所有其他DisplayObjects添加到那个容器。这样做的缺点是需要您添加一切都到容器中。一旦您,该功能就会中断不小心addChild()了常规方式。这个思维过程导致下面的第二个解决方案。
  2. 在您的DisplayObjectContainer子类中,包括指示器,覆盖与显示列表交互的方法(添加/删除子项等)所有可能导致某些事情的人掌握您的指标。这使您可以完全控制将某些内容添加到此容器时会发生什么。您可以为简单起见,合并解决方案 1 之一:全部委派对内部容器的方法调用Sprite或者,如果您不喜欢要有一个内部容器,请在没有它的情况下进行操作,并确保除了您的指标之外,没有其他子项被分配最多指数。您将创建一个附加方法来添加始终在顶部的子项,例如addTopChild()