我当前的项目(将在 Flash 播放器中运行的 Flex 应用程序)要求在表单上显示组件的任意子集,同时根据应用程序状态的某些方面隐藏所有其他组件。大约有十几个不同的文本框和下拉菜单,但根据之前输入的用户数据,有些变得无关紧要,我们不想在进入这个特定表单时显示它们。每次显示此表单时,我都可能需要显示这些组件的许多排列中的任何一种。
我正在尝试确定解决此问题的最佳方法是什么。我是否应该创建一个包含所有需要的控件的 Canvas(或其他容器),然后在我不需要的控件上设置 visible = false ?然后问题就变成了确保布局看起来不错。我不希望隐藏控件的位置出现空白。
我考虑过的另一个选项是拥有一种机制,可以动态实例化 TextInput 或 CheckBox 等组件,然后调用 container.addChild(control) 以构建组件而不必担心差距问题。
这似乎是一个在 flex 中有惯用解决方案的问题,但我不知道它是什么。这些想法似乎都不是很好,所以我想知道是否还有其他人有更好的想法。
最佳答案
最好的做法是使用状态。例如:
<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>
然后在您的代码中,调用 this.currentState = "State1"来启用第一个状态等。使用状态,您可以有选择地显示和隐藏组件。
我建议在谷歌上搜索弹性状态教程并尝试一些以正确了解状态的工作原理。
关于apache-flex - 动态定位的 Flex 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/210022/