2010-07-18 72 views
0

我有一个主要的应用程序,它声明了一个int变量。我想在另一个包中存在的另一个组件中访问这个变量。我怎样才能做到这一点?从一个组件到另一个组件的灵活访问变量

Main.mxml(默认包)

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
           preinitialize = "foo()"> 
    <fx:Script> 
      <![CDATA[ 
         public var value1:int; 
         public function foo():void { 
          value1 = 5; 
         } 

       ]]> 
     </fx:Script> 

    <\s:Application> 

Comp.mxml(组件包)

<?xml version="1.0" encoding="utf-8"?> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
       creationcomplete = "foo2()"> 
      <fx:Script> 
       <![CDATA[ 
          public function foo2(): void{ 
          //------> access value1 from Main.mxml here. 
          } 

        ]]> 
      </fx:Script> 

</s:Group> 

回答

2

由于您需要的变量位于主应用程序类中,因此可以使用parentApplication属性来访问它。

Main(this.parentApplication).value; 
//or 
Main(Application.application).value; 

通常,这样做的正确的方法是将源对象的给调用者对象的引用(在这种情况下,应用程序) - 或通过一些公共属性传递值本身。假设Comp的问题是存在于主应用程序本身,你可以这样做:

<!-- Main.mxml : make value1 [Bindable] if you need the updates to be 
    reflected automatically --> 

<custom:Comp val="{this.value1}"/> 

<!-- Comp.mxml : declare val as a public variable/property --> 
<fx:Script> 
    <![CDATA[ 
     public var val:int; 
    ]]> 
</fx:Script> 
0

你需要有一定的重定向,比如告诉组件在哪里看,即:

<fx:Script> 
    <![CDATA[ 
    [Bindable] public var myapp:Application = null; 
    public function get value1():int 
    { 
     return (myapp == null ? 0 : myapp.value1); 
    } 
    public function foo2():void 
    { 
     var i:int = this.value1; 
    } 
    ]]> 
</fx:Script> 

而且在应用:

<package:Comp myapp="this" /> 

否则,你可以创建一个类的单例 - 一个类的静态变量。但是这很混乱。

0

你的主应用程序应该有什么需要的int值组件的引用。值应该从你的主应用程序设置。如果需要设置该值以响应组件中的事件,则该组件可以触发和分派事件,并且主应用程序可以具有事件侦听器,然后传递所需的int。

您还可以绑定主应用程序actionscript中的值: BindingUtils.bindProperty(this,“i”,this.component,“i”),但以前的方法是更好的做法。

相关问题