如何在Flex中使用主应用程序的皮肤?

时间:2012-02-11 19:13:32

标签: actionscript-3 flex flex4 flash-builder flex4.5

我有一个带有SWF加载程序的应用程序 从加载的SWF文件中,我正在使用以下命令从主应用程序访问公共变量:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication;

Alert.show(global.myvar); 

这一切都很完美。


我在主应用程序中名为“skins”的目录中有一个MXML外观文件(用于按钮) 是否可以在儿童应用程序中使用此皮肤?


我已经尝试过了,遗憾的是没有工作:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication;

<s:Button label="My Text" skinClass="{global.skins.menuButtons}" />

而这,但它再也无法编译了:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication;

<s:Button label="Button 1" skinClass="global.skins.menuButtons" />
<s:Button label="Button 2" skinClass="FlexGlobals.topLevelApplication.skins.menuButtons" />

我可能以其他方式想要的东西,还是我必须将皮肤复制到我想要使用皮肤的所有项目?

感谢。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

在我的主SWF文件中,我将公共变量定义为类:

public var menuButtons:Class = skins.menuButtons;

在子SWF文件中,我用FlexGlobals.topLevelApplication引用了这个变量:

[Bindable] public var global:Object = FlexGlobals.topLevelApplication;

<s:Button label="My Text" skinClass="{global.menuButtons}" />

显然,使用 global.skins.menuButtons 直接引用皮肤是不可能的。