在ActionScript类中调用MXML

时间:2009-07-27 20:31:25

标签: flex

如何在ActionScript类中调用MXML组件。

// filename.mxml

<mx:Canvas x="181" y="180" width="333">
    <mx:Button styleName="LoginButton" id="loginButton" click="checkLogin();" x="160" y="261"/>
    <mx:TextInput styleName="loginTextInput" id="username" x="160" y="161"/>
    <mx:TextInput styleName="loginTextInput" id="password" displayAsPassword="true" x="160" y="191"/>
</mx:Canvas>

// main.as [类文件]

var obj:filename= new filename();
private function label_link(evt:TextEvent):void 
{
    obj.currentState = "defaultindex";
    obj.username.text = "";
    obj.password.text = "";
}

目标

我需要在ActionScript Class中访问MXML的用户名和密码字段。

3 个答案:

答案 0 :(得分:2)

假设您在文件夹src / com / stackoverflow / coolstuff / MyCoolBox.MXML中有一个MXML文件

import com.stackoverflow.coolstuff.MyCoolBox;
var coolBox:MyCoolBox = new MyCoolBox();
// Do something

答案 1 :(得分:0)

好的,一系列问题:

  1. 另一个标签在哪里?有可能以某种方式使用了错误的文件吗?
  2. 失败了什么线?它是obj.password还是obj.currentState(一个范围问题)?
  3. 跟踪时会发生什么(obj);
    1. 跟踪时会发生什么(getQualifiedClassName(obj))?(记得首先导入flash.utils.getQualifiedClassName)
      第二个跟踪应与import语句完全相同。
    2. 当您追踪(obj.numChildren)时,您会得到您期望的号码吗?
    3. 当你追踪(obj.getChildAt(0))时,你会得到一个画布吗?
      1. 当你追踪(Canvas(obj.getChildAt(0))。getChildAt(0))时,你会得到另一个画布吗?
      2. 跟踪时(Object(obj.getChildAt(0))。getChildAt(0).getChildren());
  4. 在一个不同的思路上 - 这是一个MXML Flex项目还是一个Actionscript Flex项目? (我已经看到改变MXML的处理方式)。
  5. 这些是我开始的调试命令。如果得到意外结果,请在设置状态之前跟踪所有内容。如果您仍然被卡住,请告诉我。

答案 2 :(得分:0)

您是否已通过addChild将obj添加到main.as中? main.as的基类是什么?您可以通过调用main.as构造函数中的obj.initialize()来测试它。

在调用initialize之前不会创建子项,通常在将组件添加到其父项时通过addChild。但是,您的main.as不是MXML文件,这意味着它不会自动调用这些方法。