0

我看了一下 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 正确添加到项目中,我按照Adob​​e 的教程进行操作,但它不起作用。我没有自动完成。你有什么建议吗?

更新:我使用 Flash Builder 4.6 Professional 并创建了一个 Flex 库项目。

4

0 回答 0