2011-06-30 7 views
0

私は、Flexを搭載したフォトビューアタイプのデスクトップAIRアプリケーションの開発を始めました。メインウィンドウからサブウィンドウを起動できますが、これらのサブウィンドウではメインウィンドウで収集したデータにアクセスできないようです。メインウィンドウのデータをサブウィンドウでどのように使用するのですか?

このデータにアクセスするにはどうすればよいですか?
または、このデータを作成時にサブウィンドウに送信するにはどうすればよいですか?動的にリンクする必要はありません。

myMain.mxml

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         width="260" height="200" 
         title="myMain"> 
    <fx:Declarations> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      public function openWin():void { 
       new myWindow().open(); 
      } 

      public var myData:Array = new Array('The Eiffel Tower','Paris','John Doe'); 
     ]]> 
    </fx:Script> 
    <s:Button x="10" y="10" width="240" label="open a sub-window" click="openWin();"/> 
</s:WindowedApplication> 

myWindow.mxml私は、これは非常に簡単な質問かもしれませんが、私は読んで、ウェブを検索し、ランダムAIR対象にチュートリアルを見ている実現

<?xml version="1.0" encoding="utf-8"?> 
<mx:Window name="myWindow" 
      title="myWindow" 
      xmlns:mx="http://www.adobe.com/2006/mxml" 
      layout="absolute" 
      width="640" height="360"> 
    <mx:Script> 
     <![CDATA[ 

     ]]> 
    </mx:Script> 
    <mx:Label id="comment" x="10" y="10" text=""/> 
    <mx:Label id="location" x="10" y="30" text=""/> 
    <mx:Label id="author" x="10" y="50" text=""/> 
</mx:Window> 

数日でそれを見つけることができませんでした。愚か者のように見えるリスクは今のところ価値があります、私は最初のアプリで乗りたいです!

答えて

2

ウィンドウクラスに属性を追加し、アプリケーションからデータを渡すことができます。属性とセッター機能付き

myWindow.mxml:

<![CDATA[ 
     private var _data : Array; 

     public function set data(data : Array) : void { 
      this._data = data; 
     } 

    ]]> 

メイン

<![CDATA[ 
     public function openWin():void { 
      var w : myWindow = new myWindow(); 
      w.data = myData; 
      w.open(); 
     } 

     public var myData:Array = new Array('The Eiffel Tower', 
              'Paris','John Doe'); 
    ]]> 

あなたはまた、あなたの窓に、コンストラクタのパラメータを追加することによってそれを行うことができますがActionScriptでWindowコンポーネントを記述する必要があります。

(また、myWindowではなくコンポーネントの名前にMyWindowを使用することもできますが、それは単に従来のニックピッキングです)。

また、アプリケーションのすべてのクラスからアクセス可能なSingleton変数のApplication.applicationがあります。しかし、これがWindowedApplicationに適用されるかどうかはわかりませんが、いずれの方法でも推奨される方法ではありません。

+0

ありがとうございました!私はすでに愛し始めています。 – Brugman

関連する問題