我有一个主要的应用程序设置“main.mxml” 其中包含以下声明:
[Bindable]
[Embed(source="../images/common/user.png")]
public var userIcon : Class;
我有另一个模块,我希望将其作为按钮图标访问。 我尝试过以下定义,但它不起作用:
<s:Group width="100%" height="29">
<s:layout>
<s:VerticalLayout horizontalAlign="center"/>
</s:layout>
<s:Button id="buttonLoad" width="80%" label="Loading" icon="{ main.userIcon }"/>
</s:Group>
答案 0 :(得分:2)
MXML类的名称不是其实例的标识符(因为它可能有很多实例)。您应该将MXML文件视为文件而不是类。它们与普通的ActionScript类完全相同。与其他OOP语言中的规则相同。因此,如果main.mxml
main
是该类的类名,则其包由相对于源文件夹的MXML文件路径确定(如在ActionScript类中)。这就是为什么你应该用大写字母(Main.mxml
而不是main.mxml
)命名你的MXML类。
如果您的main.mxml
是顶级应用,则可以将其称为FlexGlobals.topLevelApplication
。但这不是正确的做事方式。
最好的方法是将此属性注入目标类。您可以使用依赖注入框架/容器(如Spring ActionScript或RobotLegs或Parsley)来执行此操作。或者你可以通过从顶层应用程序委托给包含处理模块的代码片段的类来手动完成。加载模块时,在那里传递该值。