Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在mxml组件之间共享变量_Apache Flex_Actionscript_Adobe_Mxml_Flex4 - Fatal编程技术网

Apache flex 在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文件中传递

我在一个应用程序中有几个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}"