Creating Own Meta Data in Flex

To create your own meta data, in Flex you have to set compiler option: -keep-as3-metadata

Here is small example -

Index.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
private var metaData:MetaDataExample = new MetaDataExample();

private function displayDescription():void
{
textArea.text = metaData.description;
}
]]>

</mx:Script>
<mx:TextArea width="100%" height="100%" id="textArea"/>
<mx:Button label="Describe" click="displayDescription()"/>
</mx:Application>


MetaDataExample.as:

package
{
import flash.utils.*;
public class MetaDataExample
{
public function MetaDataExample()
{
}

public function get description():String
{
return describeType(this).toString();
}

[Orange(size="very big", isTasty="Yes Yes Yes Yes!")]
public function get prop():String
{ return "hello"; }
public function set prop(value:String):void
{ }
}
}

and finaly meta-config.xml:

<?xml version="1.0"?>
<flex-config xmlns="http://www.adobe.com/2006/flex-config">
<compiler>
<keep-as3-metadata>
<name>Orange</name>
</keep-as3-metadata>
<keep-generated-actionscript>true</keep-generated-actionscript>
<source-path>
<path-element>.</path-element>
</source-path>
</compiler>

<output>C:\Program Files\Adobe\Flex\Flex SDK 2\bin\Index.swf</output>
</flex-config>

Now you simply compile your application with -load-config+="meta-config.xml". And you have your own meta data in Flex.

P.S. in order to check it you can use flash.utils.describeType() method, here is what i’ve got:

<accessor name="prop" access="readwrite" type="String" declaredBy="MetaDataExample">
<metadata name="Orange">
<arg key="size" value="very big"/>
<arg key="isTasty" value="Yes Yes Yes Yes!"/>
</metadata>
</accessor>

5 Responses to “Creating Own Meta Data in Flex”

  1. James Ward Says:

    That’s very cool! I had no idea that was possible. Thanks!

  2. Nirth Says:

    Thanks to you.
    I’ve enjoyed your video with Bruce Eckel =)

  3. Pete Says:

    Hi,

    It works in debug mode, but I can’t get it to work in run mode. Do you have any suggestions? Thanks!

  4. Nirth Says:

    Can you provide me with more info please? version of flex etc.

  5. Pete Says:

    Hi, I spoke to someone of Adobe and it seems that there are some versions of Flex Builder who cause this problem. Manually Compiling with mxmlc did the job. Thanks.


相关文章: