我刚开始使用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主题的教程几天而无法找到它。看起来像个傻瓜的风险现在值得,我想继续我的第一个应用程序!
答案 0 :(得分: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.application;但我不知道这是否适用于WindowedApplication,无论哪种方式都不是推荐的方法。