如何在MXML中使用AS3类?

时间:2010-06-10 17:01:06

标签: flex mxml actionscript-3

如何在MXML中使用以下AS3类?

AS3班级:

package mtm 
{
  import flash.display.MovieClip;
  import flash.display.Shape;

  public class TestClass extends MovieClip
  {

      public function TestClass() 
      {
          var s:Shape = new Shape();
          s.graphics.beginFill(0x000000, 1);
          s.graphics.drawRect(0, 0, 60, 60);
          s.graphics.endFill();
          addChild(s);
      } 
  }
}

MXML文档:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Panel width="75%" height="75%" paddingTop="10" paddingLeft="10">

    </mx:Panel>
</mx:Application>

我是否需要声明自己的命名空间?我假设有可能做类似的事情:

//Where 'mtm' is my own namespace
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mtm="com.mtm.*"></mx:Application>

然后做这样的事情?

<mtm:TestClass></mtm:TestClass>

我是Flex和MXML的新手,但不是AS3的新手。 谢谢!

2 个答案:

答案 0 :(得分:3)

在我看来,你的问题已经有了答案。

是的,您必须完全按照您的方式声明自己的命名空间;通过在顶级标记上指定它 - 在您的示例应用程序中。

是的,那么您可以使用该命名空间引用您的类,就像您在示例中所述。

您有特定问题吗?由于您的自定义组件未扩展UIComponent;我怀疑你可能会遇到一些奇怪的事情;因为你的组件没有'Flex Component LifeCycle方法,比如createChildren(),commitProperties()和updateDisplayList(),这些方法可能会混淆Flex管理器类。

答案 1 :(得分:3)

是的,你有正确的想法。您的自定义xmlns是一个相对URL,指向自定义组件类,因此如果TestClass位于名为Components的文件夹中,您将放置xmlns:mtm="components.*"。您的MXML是正确的。

以下是相关的LiveDocs链接。这是查找MXML / AS3信息的好地方: http://livedocs.adobe.com/flex/3/html/help.html?content=intro_3.html