在mxml组件之间共享变量

时间:2010-05-29 04:55:37

标签: flex actionscript adobe mxml flex4

我在应用程序中有几个mxml组件,所有这些组件都需要名为genericX的相同变量。我已将该变量包含在主mxml中并将其公开

[Bindable] public var genericX:Number = 102;

但我仍然无法从其他mxml组件访问它。例如,如果我尝试这样做,它就无法识别变量。

<s:Button x="{genericX}" label="Click" />

5 个答案:

答案 0 :(得分:4)

还有一种污秽的解决方案可行,但并不好。您可以针对应用程序类创建静态变量。例如:

[Bindable] public static var genericX : Object

你可以从以下任何地方访问它:

MyApplicationName.genericX

它不漂亮,但确实有效:)

西蒙

答案 1 :(得分:3)

您无法以这种方式访问​​。 Flex中有一些名为 Events 的内容,您需要使用 eventDispatcher 将MXML文件中的此变量传递给另一个。

例如

[Bindable] public var genericX:Number = 102;

private function init():void {

var evt:NewCustomEvent = new CustomEvent(CustomEvent.SENDDATA);
evt.genericaValue = genericX
dispatchEvent(evt);

}

现在您需要进入要接收此事件的MXML组件,并使用addEventListner()来接收此事件和相应的变量。

然后最后将它注入你的按钮。

答案 2 :(得分:1)

您应该可以使用以下命令访问任何全局变量:

Flex 3:

var app:Application = mx.core.Application.application as Application;

Flex 4(看起来像你正在使用的):

var app:Object = FlexGlobals.topLevelApplication;

然后:

<s:Button x="{app.genericX}" label="Click" />

答案 3 :(得分:0)

Here是在MXML组件之间共享变量的示例,方法是在主应用程序中声明它们是公开的。

答案 4 :(得分:0)

x="{parentApplication.genericX}"