代码改变世界

Creating Own Meta Data in Flex

2008-10-12 17:35  宝宝合凤凰  阅读(308)  评论(0)    收藏  举报

Creating Own Meta Data in Flex

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.