从(未包含)actionscript文件中引用.mxml标记

时间:2015-09-17 14:44:10

标签: actionscript-3 flex

我有Home.mxmlhome_src.as标记中包含fx:Script的文件。现在假设我想从另一个.as文件(例如<mx:TextInput.../>)中检索位于Home.mxml的{​​{1}}标记的值。

我尝试了login_src.as但不起作用(我得到了这样的错误:上找不到属性)。

我不知道是否可以不包含想要访问.mxml属性的.as文件,但我想找出因为我有一个canvas.mxml页面(带有一些文本和组合标记)包含一个带有两个其他.mxml页面的tabNavigator;在这两个选项卡的actionscript中,我需要canvas.mxml输入和组合标记的值。

有没有办法在不将tab1或tab2.as包含到我的canvas.mxml中的情况下执行此操作?

单击按钮可打开数据插入弹出窗口:

home.as

mx.core.Application.application.[file.mxml].[property]

InsertPopUp.mxml

..
var insertPop:InsertPopUp = InsertPopUp(PopUpManager.createPopUp((this.parentApplication as DisplayObject), InsertPopUp, true));
PopUpManager.centerPopUp(insertPop);
..

然后我有:

Cat.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" close="close()">

<mx:Script source="InsertPopUp_src.as"/>

<mx:Label id="lblage" text="Age:"/>
<mx:TextInput id="txtAge" editable="true"/> // I want this data

<mx:TabNavigator id="insertTab" width="100%" height="85%">
        <mx:VBox id="vbx1" width="100%" height="100%"  label="Car Data">
            <mx:ModuleLoader id="mdlCatData" url="modules/Cat.swf" height="100%" width="100%" />
        </mx:VBox>
        <mx:VBox id="vbx2" width="100%" height="100%" label="Van Data">
            <mx:ModuleLoader id="mdlDogData" url="modules/Dog.swf" height="100%" width="100%"/>
        </mx:VBox>
</mx:TabNavigator>
</mx:TitleWindow>

Dog.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init();">

<mx:Script source="CatData_src.as" />

// other forms..

</mx:Module>

我想检索<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init();"> <mx:Script source="DogData_src.as" /> // other forms.. </mx:Module> textInput的数据并在 CatData_src.as DogData_src.as 中使用它;如何在不诉诸脚本的情况下获取数据? 我做了这个“图形配置”,因为一些数据对猫和狗来说很常见..(显然只是一个例子)。

1 个答案:

答案 0 :(得分:2)

mxml在AS3世界中并不是什么特别的东西,它似乎有所不同,但它实际上并不像以后编译成AS3代码那样。在带有id的mxml标记中声明的任何对象只是将生成的as3类的属性(使用与mxml文件相同的名称)。

如果该mxml类应该是唯一的(不是它的2个实例),则可以使用静态方法访问您的属性。

示例:

  • mxml主类名为:MyMain.mxml
  • 声明MyMain类型的静态变量(在fx:script中):static public var instance:MyMain;
  • 在addedToStage侦听器(或类似)中设置您的变量:instance = this
  • 从任何地方访问您的实例和属性:MyMain.instance.mytextimput

如果使用mxml类的多个实例,那么获取实例的引用并像使用任何其他AS3对象一样使用它。