【问题标题】:Flex 3: Is there an easy way to change a value within a component from within the main application?Flex 3:有没有一种简单的方法可以从主应用程序中更改组件中的值?
【发布时间】:2011-10-08 18:00:13
【问题描述】:

所以我正在使用我在http://hillelcoren.com/flex-autocomplete/ 在线找到的自定义自动建议组件。该项目的背景颜色在以下文件夹中设置:com > hillelcoren > components > autoComplete > FlowBox.mxml。那里的 bg 颜色硬编码为白色:

<mx:Canvas
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns="com.hillelcoren.components.autoComplete.classes.*"
    verticalScrollPolicy="off" horizontalScrollPolicy="off"
    borderStyle="inset" backgroundColor="#FFFFFF"
    initialize="init()" clipContent="true" 
    xmlns:components="com.hillelcoren.components.*">

我在我创建的名为“position.mxml”的组件中使用此组件,该组件位于名为“modules”的文件夹中。有什么方法可以从位置模块更改自动提示框的背景颜色?

【问题讨论】:

    标签: apache-flex module components autosuggest


    【解决方案1】:

    实际上它取决于组件架构,我没有深入研究 Hillel 的 AutoComplete 组件的架构。

    样式通常是继承的,因此理论上在位置组件或 AutoComplete 上设置 backgroundColor 样式是设置值的一种方法。但是,我希望“硬编码”样式覆盖这种继承,除非您设置它在组件初始化之后。

    另一种方法是修改 Hillel 的组件以将该值作为样式公开。从理论上讲,这并不难。在实践中,复杂的架构可能会使其变得困难。 More info on creating custom styles.

    第三种方法是深入组件并设置样式。像这样的:

    positionInstance.autoCompleteInstance.flowBoxInstance.setStyle('backgroundColor',myNewStyle);
    

    当然,所有相关的组件实例都必须公开才能这样做。

    第四种方法可能是使用不同的组件。 The Flextras AutoComplete 组件是原生 Spark 组件,可以轻松创建自定义皮肤来更改任何相关皮肤部件的背景颜色。

    【讨论】:

    • flextras 自动完成功能能否根据应用程序使用时经常变化的布尔值更改背景颜色?
    • @Brds 你在组件类上设置的样式在皮肤类中被继承;因此您可以使用自定义皮肤类轻松模拟某些东西。我很确定当在组件类中设置样式时,皮肤类的 styleChanged() 方法会触发;这就是你可以进行切换的地方。不过,这些都不是我们的组件所独有的,它只是框架的运作方式。
    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 2020-10-15
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2012-06-17
    相关资源
    最近更新 更多