apache-flex - 动态定位的 Flex 组件

标签 apache-flex dynamic layout

我当前的项目(将在 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/

相关文章:

css - 使用 Flex CSS 样式表是在浪费时间吗?

apache-flex - Adobe Air/Flex 的最佳 ORM

java - SWT 按钮和信息栏对齐

java - 如何在 Java GridLayout 中使用边距和填充

.net - WPF - 如何将 WrapPanel 中的所有项目居中?

actionscript-3 - Adobe Flash Player 设置不可点击

java - 使用 BlazeDS 或 Web 服务作为 Flex View 层和 Spring 业务层之间的远程处理和消息传递技术的优缺点?

java - 如何创建自适应 Android 应用

ios - 如何根据 UITableView 滚动动态调整 UITableViewCell 的大小?

javascript - 如何让Plotly.js监听刻度标签的点击事件?