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

Ada*_*tle 3 apache-flex flex3 actionscript-3

我有一个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]"
>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用绑定,对于backgroundColorbackgroundGradientColors属性:

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    ...
    backgroundColor="{app_background_color}"
>
Run Code Online (Sandbox Code Playgroud)

-和-

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    ...
    backgroundGradientColors="{app_background_color}"
>
Run Code Online (Sandbox Code Playgroud)

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

数据绑定将无法检测到"app_background_color"的分配.

我也跑过这个页面似乎表明我可以用这个setStyle()方法来做,但文档似乎表明这个方法只适用于组件,而不是主画布.

我想我可以<mx:Canvas></mx:Canvas>为此专门包装所有内容,但这似乎很浪费 - 就像在HTML中的Div-itis一样.

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

Nat*_*che 5

StyleManager.getStyleDeclaration("Application").setStyle('backgroundColor', 'Red');
Run Code Online (Sandbox Code Playgroud)