我看了一下 flex 元数据,它似乎很安静。虽然我有问题,但我没有自动完成元数据。
我会告诉你我做了什么,也许你会发现一个错误。我想创建自己的样式元数据标记,例如 MyStyle。我想创建自己的,因为我更容易在运行时确定元数据是由我还是由 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 正确添加到项目中,我按照Adobe 的教程进行操作,但它不起作用。我没有自动完成。你有什么建议吗?
更新:我使用 Flash Builder 4.6 Professional 并创建了一个 Flex 库项目。