如何在Flex 3.5应用程序中在运行时更改应用程序背景颜色?

时间:2010-04-20 18:52:03

标签: flex actionscript-3 flex3

我有一个Flex 3.5应用程序,它可以用于多种用途,作为我想用来表示应用程序所处模式的视觉变化的一部分,我想改变它的背景颜色。

目前,应用程序标记如下所示:

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:com="ventures.view.component.*"
    xmlns:views="ventures.view.*"
    layout="absolute"
    preinitialize="onPreInitialize()"
    creationComplete="onCreationComplete()"
    applicationComplete="onApplicationComplete()"
    click="onClick(event)"
    enabled="{(!chainController.generalLocked)}"
    backgroundGradientColors="[0xFFFFFF, 0xFFFFFF]"
>

我已尝试对backgroundColorbackgroundGradientColors属性使用绑定:

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    ...
    backgroundColor="{app_background_color}"
>

- 和 -

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    ...
    backgroundGradientColors="{app_background_color}"
>

但是对于前者的绑定是不允许的,对于后者有一个警告:

  

数据绑定将无法检测到“app_background_color”的分配。

我还遇到了this page这似乎表明我可以使用setStyle()方法执行此操作,但the documentation似乎表明此方法仅适用于组件,而不是主帆布。

我想我可以将<mx:Canvas></mx:Canvas>中的所有内容专门用于此目的,但这似乎很浪费 - 就像HTML中的Div-itis或其他东西。

在运行时更改主应用程序背景颜色的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

StyleManager.getStyleDeclaration("Application").setStyle('backgroundColor', 'Red');

答案 1 :(得分:2)

如果你的mx:Application标签使用了backgroundColor属性,你需要这样做:

mx.core.Application.application.setStyle('backgroundColor','green');