2010-12-08 70 views
0

如何在ActionScript中將變量從一個頁面傳遞到另一個頁面? 我得到了一些解決方案,這可以使用ActionScript中的CustomEvents完成,但我找不到容易理解和簡單的解決方案。任何人都可以解釋如何通過一個小例子傳遞變量?請幫忙 ?如何在ActionScript中傳遞變量?

回答

0

最佳做法是使用事件以確保您的類不是太緊密耦合。下面是做這件事,但當然有許多可用的不同的方法....

//In your main class 
    private var dispatcher:EventDispatcher = new EventDispatcher(); 

    private var page1:A; 
    private var page2:B; 

    public function Main() 
    { 
     page1 = new A(dispatcher); 
     page2 = new B(dispatcher); 
    } 


    //In Class A (or Class B) 
    private var dispatcher:EventDispatcher; 

    public function A(dispatcher:EventDispatcher) 
    { 
     this.dispatcher = dispatcher; 
     dispatcher.addEventListener(CustomEvent.EXAMPLE , customEventListener); 
    } 

    private function customEventListener(event:CustomEvent):void 
    { 
     trace(event.type , event.data); 
    } 

    private function anyMethod(data:Object):void 
    { 
     //using a CustomEvent with a data property 
     //also passing a type can help in selecting between actions 
     dispatcher.dispatchEvent(new CustomEvent(CustomEvent.EXAMPLE , data)); 
    } 
0

這個問題已經或多或少被帕特里克回答,但創建自定義事件的交代被排除在外。所以或多或少地加入PatrickS的回答,下面是一個自定義事件的例子。

package com.events 
{ 
    import flash.events.Event; 

    public class CustomEvent extends Event 
    { 
     public static const EXAMPLE:String = "example"; 

     public var data:String; 

     public function CustomEvent(p_type:String, 
            p_data:String, 
            p_bubbles:Boolean = false, 
            p_cancelable:Boolean = false):void 
     { 
      super(p_type, p_bubbles, p_cancelable); 
      data = p_data; 

     }// end function 

     override public function clone():Event 
     { 
      return new CustomEvent(type, data, bubbles, cancelable); 

     }// end function 

    }// end class 

}// end package 

要創建自定義事件,您必須擴展事件或其子類,例如,的MouseEvent。 CustomEvent類是擴展Event的自定義事件。

創建自定義事件時,您可以創建自定義事件類型。事件類型是在分派事件時作爲參數給出的字符串值。在解析時,強烈建議以常量的形式給它們,以使它們成爲類型安全的。爲此目的,您爲事件創建公共靜態常量屬性。例如,事件Event具有事件類型COMPLETE,它是一個具有字符串值「complete」的公共靜態常量。在這種情況下,CustomEvent的事件類型爲EXAMPLE,字符串值爲「example」。

創建自定義事件時,您可以創建事件屬性來存儲分派事件時給出的值。例如,事件ProgressEvent具有事件屬性bytesLoaded。在這種情況下,CustomEvent有一個名爲data的屬性。

創建自定義事件時,構造函數必須具有事件類型,bubbles標誌和可取消狀態的參數。這也是您可以爲要存儲在事件屬性中的值添加參數並與之一起分派的參數。在這種情況下,有一個稱爲p_data的參數,它是一個字符串類型。然後使用super關鍵字來調用父類Event的構造函數,並分析將自定義事件分派給父類的構造函數時給出的參數。我不會詳細討論這個問題,因爲它會進入類繼承,而且你不需要知道這一點。接下來,將事件屬性的值與分派事件時分析的數據一起分配。在這種情況下,事件CustomEvent的屬性數據被分配了來自通過CustomEvent的構造函數解析的p_data參數的值。我希望這有助於:)