动态定位的Flex组件

Mik*_*eck 3 apache-flex layout dynamic

我对当前项目(将在Flash播放器中运行的Flex应用程序)有一个要求,即在表单上显示组件的任意子集,同时根据应用程序状态的某些方面隐藏所有其他组件.有大约十几个不同的文本框和下拉菜单,但有些根据以前输入的用户数据变得无关紧要,我们不想在我们到达这个特定表单时显示它们.每次显示此表单时,我都需要显示这些组件的许多排列中的任何一个.

我正在试图决定解决这个问题的最佳方法是什么.我应该创建一个包含所有必需控件的Canvas(或其他容器),然后在我不需要的那些上设置visible = false吗?然后问题就是确保布局看起来不错.我不希望隐藏的控件存在差距.

我想到的另一个选项就是有一个机制可以动态实例化TextInput或CheckBox等组件,然后调用container.addChild(control)来构建组件而不必担心间隙问题.

这似乎是一个在flex中有惯用解决方案的问题,但我不知道它是什么.这些想法都不是很好,所以我想知道是否有其他人有更好的主意.

Dav*_*rno 5

最好的做法是使用状态.例如:

<mx:states>
    <mx:State name="State1">
        <mx:AddChild position="lastChild">
            <components.../>
        </mx:AddChild>
    </mx:State>
    <mx:State name="State2">
        <mx:AddChild position="lastChild">
            <mx:Canvas.../>
        </mx:AddChild>
        <mx:AddChild position="lastChild">
            <mx:VBox.../>
        </mx:AddChild>
    </mx:State>
</mx:states>
Run Code Online (Sandbox Code Playgroud)

然后在代码中,调用this.currentState ="State1"以启用第一个状态等.使用状态,您可以有选择地显示和隐藏组件.

我建议谷歌搜索flex状态教程,并尝试一些以正确了解状态如何工作.