【问题标题】:flex 4 - depth property not working as expectedflex 4 - depth 属性没有按预期工作
【发布时间】:2012-04-23 08:01:37
【问题描述】:

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

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

现在,我已经编写了一个逻辑来确定哪个应该出现在后面,哪个应该出现在我称之为 idx(索引)的等距区域中,我正在看到这个值MapElement 的 depth 属性。

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

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

有人可以帮我吗?

我知道另一种解决方案使用 swapChildrenswapChildrenAt 以及 addChildAt 方法(我不想用于我的项目具体原因)但我需要找出深度有什么问题

【问题讨论】:

  • depth 仅适用于 Flex 4 组件。也许这就是问题所在?
  • mx.core.UIComponent 不是 Flex4 组件?

标签: apache-flex actionscript flex4


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢 Tush 的回答,我其实忘了提(现在更新)。我正在寻找答案为什么 depth 不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2019-08-28
    • 2018-09-03
    • 1970-01-01
    相关资源
    最近更新 更多