Apache flex 在mxml组件之间共享变量
我在一个应用程序中有几个mxml组件,它们都需要一个名为Apache flex 在mxml组件之间共享变量,apache-flex,actionscript,adobe,mxml,flex4,Apache Flex,Actionscript,Adobe,Mxml,Flex4,我在一个应用程序中有几个mxml组件,它们都需要一个名为genericX的相同变量。我已将该变量包含在主mxml中并将其公开 [Bindable] public var genericX:Number = 102; 但我仍然无法从其他mxml组件访问它。例如,如果我尝试这样做,它就无法识别变量 <s:Button x="{genericX}" label="Click" /> 您不能以这种方式访问。Flex中有一种称为事件的东西,您需要使用事件调度器将这个变量在MXML文件中传递
genericX
的相同变量。我已将该变量包含在主mxml中并将其公开
[Bindable] public var genericX:Number = 102;
但我仍然无法从其他mxml组件访问它。例如,如果我尝试这样做,它就无法识别变量
<s:Button x="{genericX}" label="Click" />
您不能以这种方式访问。Flex中有一种称为
事件的东西,您需要使用事件调度器将这个变量在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()接收此事件和相应的变量
<s:Button x="{genericX}" label="Click" />
最后把它注入你的按钮 还有一个肮脏的解决方案,虽然有效,但并不好。可以针对应用程序类创建静态变量。例如:
[Bindable] public static var genericX : Object
您可以从以下任何位置访问:
MyApplicationName.genericX
它不漂亮,但确实有用:)
simon您应该能够通过以下方式访问任何全局变量:
Flex 3:
var app:Application = mx.core.Application.application as Application;
Flex 4(看起来像您正在使用的):
然后:
<s:Button x="{app.genericX}" label="Click" />
是通过在主应用程序中声明组件为公共组件在MXML
组件之间共享变量的示例。因此,在主应用程序中,不是像[Bindable]public var genericX:Number=102那样声明它为公共静态,我将它声明为什么?您将像在原始示例中一样声明它:[Bindable]public var genericX:Number=102它不需要是静态的。
x="{parentApplication.genericX}"