如何在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的新手。 谢谢!
答案 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