2011-06-30 58 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

<?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> 

我意识到这可能是一个非常简单的问题,但我已经在网上搜索,阅读和观看随机AIR科目的教程几天没有找到它。看起来像一个傻瓜的风险现在是值得的,我想与我的第一个应用程序!

回答

2

您可以将属性添加到您的窗口类,并从应用程序传递数据。

与属性和setter函数:

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,但这只是常规的挑剔)。

另外,请注意,有一个单例变量Application.application可供应用程序中的所有类访问;但是我不知道这是否适用于WindowedApplication,并且这两种方法都不是推荐的方法。

+0

谢谢!我已经开始爱上了。 – Brugman