0

我正在开发一个等距游戏。

我有一个父UIComponent ( WorldMap )。玩家可以选择MapElement(游戏项目)并将它们放在可玩区域WorldMap中。这个 MapElement 也是一个 UIComponent,它包含子控件,例如 Sprite、Image、Label 和自定义 Flex 组件以保存各种信息。

现在,我已经编写了一个逻辑来确定哪个应该出现在后面,哪个应该出现在我称之为idx (index) 的 Isometric 区域的前面,并且我看到这个值是 MapElement 的 depth属性

我按照下图所示的顺序添加了三个组件,并将它们的深度属性分别设置为 11077、11168 和 10630。如果深度属性正常工作,则第三项应该落后于第一项,但似乎它们按添加的顺序出现(默认行为)

如果我没记错的话,深度值可以是任何东西

有人能帮我吗?

我知道另一个使用swapChildrenswapChildrenAtaddChildAt方法的解决方案(我不想因为我的项目特定原因使用它)但我需要找出深度有什么问题

在此处输入图像描述

4

2 回答 2

2

正如我认为的那样,问题在于您的 WorldMap 组件,正如您所说,它是 UIComponent。深入了解属性显示depthsetter 启动方法,该方法在 UIComponent 中为空,并且仅使用作为每个 Flex 4 组件的主容器的invalidateLayering逻辑覆盖。Group这里的例子: http ://www.tink.ws/blog/flex-4-uicomponent-depth/

因此,看起来,您至少需要使用WorldMapGroupSkinnableContainer作为 WorldMap 才能实现 depth 属性才能正常工作。

于 2012-04-23T13:23:30.660 回答
0

使用 UIComponent.addChildAt(child:DisplayObject, index:int)。addChildAt 将子 DisplayObject 实例添加到此 DisplayObjectContainer 实例。子元素被添加到指定的索引位置。索引 0 表示此 DisplayObjectContainer 对象的显示列表的后面(底部)。

于 2012-04-23T10:12:58.327 回答