2010-07-18 47 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」),但以前的方法是更好的做法。

相關問題