flex 4 - 深度属性未按预期工作

时间:2012-04-23 08:01:37

标签: flex actionscript flex4

我正在开发等距游戏。

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

现在,我已经编写了一个逻辑来确定哪一个应该出现在后面,哪一个应该出现在Isometric区域的前面,我称之为 idx (索引),我正在发布这个值到 MapElement 的深度属性。

我按照下面图片中显示的顺序添加了三个组件,并且我已将深度属性设置为11077,11168和10630.如果深度属性正常工作,则第3个项目应该具有落后于第一项,但似乎它们按照它们添加的顺序出现(默认行为)

如果我没错,深度值可以是任何

有人可以帮助我吗?

我知道使用 swapChildren swapChildrenAt 以及 addChildAt 方法的另一种解决方案(我不想用于我的项目特定原因)但我需要找出深度错误

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为,问题出在你的WorldMap组件中,正如你所说,它是UIComponent。深入深度属性显示depth setter启动invalidateLayering方法,该方法在UIComponent中为空,并且仅在Group中覆盖逻辑,这是每个Flex 4组件的主要容器。这是一个例子: http://www.tink.ws/blog/flex-4-uicomponent-depth/

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

答案 1 :(得分:0)

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