我看了一下flex元数据,看起来很安静。虽然我遇到了问题,但我没有自动完成元数据。
我会告诉你我做了什么,也许你发现了一个错误。我想创建自己的Style元数据标签,例如,例如我的风格。我想创建自己的,因为我更容易在运行时确定元数据是由我还是由flex框架添加的(因此我不会使用预定义的Style元数据标记)。
添加元数据非常简单,我只是编写了这段代码来实现它:
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
width="1024" height="768">
<fx:Metadata>
[MyStyle(required="true")]
</fx:Metadata>
</s:Group>
在我的WindowedApplication组件上,我添加了一个添加到舞台的舞台监听器。因此,添加到应用程序的所有元素将在将它们添加到舞台时触发Event.ADDED。在那个eventHandler中,我扫描了元数据标签的添加元素。
protected function addedToStageListener(event:Event):void
{
var classInfo:XML = describeType(event.target);
for each (var x:XML in classInfo..metadata)
{
if (x.@name == "MyStyle")
trace(x);
}
}
我还添加了一个flex-config.xml文件(在我的src文件夹的顶层)来添加编译器选项,以便我可以在运行时读取我的自定义元数据标记。该文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<flex-config>
<compiler>
<keep-as3-metadata>
<name>MyStyle</name>
</keep-as3-metadata>
</compiler>
</flex-config>
当我运行时,我得到了我期望的结果
<metadata name="MyStyle">
<arg key="required" value="true"/>
</metadata>
所以这很有效。我的下一步是在向代码添加元数据标记时添加自动完成功能。为此,您应该创建一个metadata.xml,它指定元数据标签吗? 所以我这样做了,最后我得到了这个简单的metadata.xml
<?xml version="1.0" encoding="UTF-8"?>
<annotations version="2.1.1">
<metadata name="MyStyle" description="Adds style.">
<context name="class" />
<attribute name="required" type="Boolean" required="true" />
</metadata>
</annotations>
要将metadata.xml正确添加到我跟随that tutorial by Adobe的项目中,但它不起作用。我没有得到自动完成功能。你有什么建议吗?
更新:我使用Flash Builder 4.6 Professional,并创建了一个Flex库项目。