原文:http://blog.orangeflash.eu/?p=45
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>