2010-12-08 9 views
0

ActionScriptで変数を1ページから別のページに渡すにはどうすればよいですか? 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のパブリック静的定数プロパティを作成します。たとえば、イベントEventには、完全な文字列値を持つパブリック静的定数であるイベントタイプCOMPLETEがあります。この場合、CustomEventには文字列値が "example"のイベントタイプEXAMPLEがあります。

カスタムイベントを作成するときに、イベントが送出されたときに渡される値を格納するイベントプロパティを作成できます。たとえば、イベントProgressEventにはイベントプロパティbytesLoadedがあります。この場合、CustomEventにはdataというプロパティがあります。

カスタムイベントを作成する場合、コンストラクタには、イベントタイプ、バブルフラグ、キャンセル可能な状態のパラメータが必要です。ここでは、イベントのプロパティに保存したい値のパラメータを追加し、イベントのプロパティとともにディスパッチすることもできます。この場合、p_dataという文字列型のパラメータがあります。次に、superキーワードを使用して親クラスEventのコンストラクタを呼び出し、カスタムイベントを親クラスのコンストラクタにディスパッチするときに指定された引数を解析します。私はこれについて詳細には触れません。なぜならそれはクラス継承に入り、あなたは本当にそれを知る必要はないからです。次に、イベントプロパティの値に、イベントが送出されたときに解析されるデータを割り当てます。この場合、イベントCustomEventのプロパティデータには、CustomEventのコンストラクタを介して解析されたp_data引数の値が割り当てられます。

私はこれが助けて欲しいと思っています:)

関連する問題