- 浏览: 336769 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangjun0603:
学习了,写的真好!
native2ascii的简单应用 -
qq672076266:
...
native2ascii的简单应用 -
loyalboys:
...
native2ascii的简单应用 -
hanjinting1004:
...
Flex开发者需要知道的10件事 -
管好你家猫:
学了,文章,
native2ascii的简单应用
Flex引入了元数据标签的概念,它告诉编译器如何编译这段Flex 或actionscript代码。大多数人都使用过[Bindable]标签,元数据标签是一种 特殊的标签,它在代码中的作用就是向编译器提供如何编译程序的信息。实际上,这些标签并没有被编译到生成的SWF文件中,而只是 告诉编译器如何生成SWF 文件。 这篇Post结合网上相关的 资料 以及Adobe的 help resource center的相关材料 介绍了16个元数据标签。
[ArrayElementType]
实际上,定义一个数组通常来说是一件很平常的事情,因为数组中的元素可以是任何类型的。不过,使用ArrayElementType元数据标签可以让你定义数组元素的数据类型。下面的例子展示了如何使用[ArrayElementType]:
[ArrayElementType(”String”)]
public var arrayOfStrings:Array;
[ArrayElementType(”Number”)]
public var arrayOfNumbers:Array;
[ArrayElementType(”mx.core.UIComponent”)]
public var arrayOfUIComponents:Array;
[Bindable]
Bindable元数据标签是最经常用到的一个元数据标签,因为它使程序组件之间的数据同步变得很容易。Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。绑定数据的时候,你必须先使用元数据标签定义一下数据。Bindable也可以用来绑定到事件。
[DefaultProperty]
DefaultProperty元数据标签用来将一个单一属性设定为某个类的默认属性。它允许在一个容器标签内设定属性,而不用定义属性的名字。一个简单的例子就是一个自定义Button类。 Listing 3 展示了一个简单的Button类,它将label属性设定为了DefaultProperty。 Listing 4 展示了label属性是如何在自定义Button标签中作为一个字符串定义的。
[Deprecated]
A class or class elements marked as deprecated is one which is considered obsolete, and whose use is discouraged in the current release. While the class or class element still works, its use can generate compiler warnings.
[Embed]
Embed元数据标签用来导入图片到程序。可以通过两种方式使用Embed。你可以将图片嵌入到ActionScript中并将其指派给一个变量(如同下面代码中的第一个例子),或者你也可以将图片直接指派给组件的属性(使用下面代码中的第二个例子所示的语法规则)。
例1:
[Embed(source=”myIcon.gif”)]
[Bindable]
public var myIcon:Class;<mx:Button label=”Icon Button 1″ icon=”{myIcon}”/>
<mx:Button label=”Icon Button 2″ icon=”{myIcon}”/>
例2:
<mx:Button label=”Icon Button 1″ icon=”@Embed(source=myIcon.gif’)”/><mx:Button label=”Icon Button 2″ icon=”@Embed(source=myIcon.gif’)”/>
上面这两个例子产生的结果是一样的。创建myIcon类的好处是,它在一个类中只定义一次并可以绑定到程序中的多个组件。
[Event]
Event元数据标签用来声明那些被自定义类分派的事件。将这个元数据标签添加到类定义中之后,你就可以在MXML标签中添加事件处理函数来初始化该自定义类。
[Effect]
Effect元数据标签用来定义一个自定义效果,当某个事件发生的时候该效果会被分派。
[IconFile]
IconFile 是用来定义一个jpg,gif或者png文件的文件名的,它在你的自定义类中作为图标来使用。[Embed]元数据标签可以用来嵌入图片、SWF文件、音 乐文件以及视频文件等,而IconFile则只是用来嵌入用来作为自定义类图标的文件。下面是一个IconFile的例子:
[IconFile(”icon.png”)]
public class CustomButton extends Button
{}
[Inspectable]
在使用Flex Builder 2的时候,你可能会希望某些自定义组件的属性在代码提示和属性检查器(property inspector)中显示,Inspectable元数据标签就是用来定义那些属性的。
[InstanceType]
当在一个模板对象中声明一个像IDeferredInstance这样的变量时,InstanceType元数据标签就用来声明对象的类型。下面是InstanceType的用法:
[InstanceType(”package.className”)]
[NonCommittingChangeEvent]
NonCommittingChangeEvent元数据标签在某个特定事件发生的时候可以防止变量在事件发生的过程中被更改。
[RemoteClass]
RemoteClass 可以用来将一个ActionScript类绑定到一个Java类或一个ColdFusion CFC。这样做可以自动转换数据类型。下面的例子将包com.mydomain中的名为MyClass的ActionScript类绑定到了同一个包中名 为MyClass的Java类:
package com.mydomain {
[Bindable]
[RemoteClass(alias=”com.mydomain.MyClass”)]
public class MyClass {
public var id:int; public var myText:String;
}
}
[Style]
Style元数据标签用来为组件定义自定义样式属性的。只需要简单地将Sytle元数据标签添加到类的定义当然,然后就可以使用getSytle方法获取它的值了。
标签 | 描述 |
[ArrayElementType] | 在数组中定义所有允许的数据类型。 |
[Bindable] | 声明一个属性可以在代码中使用数据绑定表达式。 |
[DefaultProperty] | 定义组件在MXML中使用时的默认属性的名称。 |
[Deprecated] | 标识一个类或类的元素是不推荐使用的,这样编译器能认出他并在被调用时给出一个警告信息。 |
[Effect] | 定义MXML的特效属性名称。 |
[Embed] | 在编译时导入 JPED,PNG,SVG 或 SWF文件。也会导入SWC文件的图片资源。他的功能等同于MXML中的 @Embe 语法。 |
[Event] | 定义MXML的事件属性的名称和类型。 |
[Exclude] | 使 Flex Builder 的标签检查器忽略类元素。语法类似 [Exclude(name=”label”, kind=”property”)] |
[ExcludeClass] | 是 Flex Builder 标签检查器忽略类。这相当于ASDoc中的 @private 标签。 |
[IconFile] | 定义一个图标文件,使组件在Adobe Flex Builder的插入面板中以该图标显示。 |
[Inspectable] | 定义一个属性的列表,供组件使用者在 Flex Builder 的的属性提示和标签检查中使用。同时也定义了属性的可用值。 |
[InstanceType] | 指定了 IDeferredInstance 中的,属性接受的数据类型。 |
[NonCommittingChangeEvent] | 定义一个事件过渡触发器。 |
[RemoteClass] | 把一个ActionScript对象映射到Java对象。 |
[Style] | 为组件的样式属性定义一个MXML标签属性。 |
[Transient] | 当一个 ActionScript 对象被映射到Java对象后,被该标签标识的属性,会从发送到服务端的数据中忽略掉。 |
thanks : http://www.geoinformatics.cn/?p=899
English help document:
About metadata tags
[Event(name="enableChanged", type="flash.events.Event")] class ModalText extends TextArea { ... }
<?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="*"> <mx:Script> <![CDATA[ function handleEnableChangeEvent(eventObj:Event):void { ... } ]]> </mx:Script> <MyComp:ModalText enableChanged="handleEnableChangeEvent(event);"/> </mx:Application>
// Add the [Event] metadata tag outside of the class file. [Event(name="enableChange", type="flash.events.Event")] public class ModalText extends TextArea { ... // Define class properties/methods private var _enableTA:Boolean; // Add the [Inspectable] metadata tag before the individual property. [Inspectable(defaultValue="false")] public function set enableTA(val:Boolean):void { _enableTA = val; this.enabled = val; // Define event object, initialize it, then dispatch it. var eventObj:Event = new Event("enableChange"); dispatchEvent(eventObj); } }
<?xml version="1.0"?> <!-- TextAreaEnabled.mxml --> <mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Metadata> [Event(name="enableChange", type="flash.events.Event")] </mx:Metadata> <mx:Script> <![CDATA[ // Import Event class. import flash.events.Event; // Define class properties and methods. private var _enableTA:Boolean; // Add the [Inspectable] metadata tag before the individual property. [Inspectable(defaultValue="false")] public function set enableTA(val:Boolean):void { _enableTA = val; this.enabled = val; // Define event object, initialize it, then dispatch it. var eventObj:Event = new Event("enableChange"); dispatchEvent(eventObj); } ]]> </mx:Script> </mx:TextArea>
Listing 1 A simple use of [Bindable] <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF"> <mx:Script> <![CDATA[ [Bindable] private var me:String="Rich Tretola"; ]]> </mx:Script> <mx:Panel title="Simple Binding" width="500" height="90" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal"> <mx:Label text="{me}"/> </mx:Panel> </mx:Application> Listing 2 Using [Bindable] with getters and setters <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private var _phoneNumber:String = �"; // Bind getter function to phoneNumberChanged event [Bindable(event="phoneNumberChanged")] public function get phoneNumber():String { return _phoneNumber; } // Setter method. public function set phoneNumber(value:String):void { if (value.length<10) { _phoneNumber = value; } else { _phoneNumber = phoneFormatter.format(value); } // Create and dispatch event var eventObj:Event = new Event(�phoneNumberChanged"); dispatchEvent(eventObj); } ]]> </mx:Script> <mx:PhoneFormatter id="phoneFormatter" formatString="(###) ###-####" validPatternChars="#-() �/> <mx:Panel title="Bind with Getters and Setters" width="500" height="90" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal"> <mx:TextInput id="ti1" change="phoneNumber=ti1.text" maxChars="10" restrict="0-9"/> <mx:TextInput id="ti2" text="{phoneNumber}"/> </mx:Panel> </mx:Application> Listing 3 Custom Button class named MyButton package { import mx.controls.Button; [DefaultProperty(�label")] public class MyButton extends Button { } } Listing 4 Using the MyButton class wih [DefaultProperty] <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comps="*"> <comps:MyButton> <mx:String>Test</mx:String> </comps:MyButton> </mx:Application> Listing 5 Custom ButtonLabel class using [Event] package { import mx.controls.Button; import flash.events.Event; // Define the custom event [Event(name="labelChanged", type="flash.events.Event")] public class ButtonLabel extends Button { // property to hold label value private var _myLabel:String; // public setter method public function set myLabel(s:String):void { _myLabel = s; this.label = s; // Create and dispatch custom event var eventObj:Event = new Event(�labelChanged"); dispatchEvent(eventObj); } } } Listing 6 Using the ButtonLabel class with the labelChanged [Event] <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comps="*" backgroundColor="#FFFFFF"> <mx:Script> <![CDATA[ import mx.controls.Alert; import flash.events.Event; // method to handle custom event public function labelChanged(eventObj:Event):void { myTA.text= myTA.text + �\n"+ eventObj.target.label; myTA.verticalScrollPosition = myTA.verticalScrollPosition + 20; } ]]> </mx:Script> <mx:Panel title="Event Sample" width="500" height="275" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="absolute"> <mx:TextInput id="buttonLabelTI" change="myButton.myLabel=buttonLabelTI.text" x="10" y="9"/> <!--Instantiate custom class and define method to handle label- Changed event--> <comps:ButtonLabel id="myButton" labelChanged="labelChanged(event) ;" x="10" y="39"/> <mx:TextArea id="myTA" width="200" height="200" x="249" y="10"/> </mx:Panel> </mx:Application> Listing 7 Add the Effect metadata tag ... // Define the custom event [Event(name="labelChanged", type="flash.events.Event")] [Effect(name="labelChangedEffect", event="labelChanged")] public class ButtonLabel extends Button { ... Listing 8 Add labelChangedEffect to the Component Instantiation MXML Tag <comps:ButtonLabel id="myButton" labelChanged="labelChanged(event);" labelChangedEffect="myEffect" x="10" y="39"/> Listing 9 Custom component with [Inspectable] defined <?xml version="1.0" encoding="utf-8"?> <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Inspectable(defaultValue="Visa", enumeration="Visa,Mastercard,Discover,American Express" category="Credit Card" type="String")] public var ccType:String; ]]> </mx:Script> </mx:HBox> Listing 10 Using [NonCommittingChangeEvent] <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF"> <mx:Script> <![CDATA[ import flash.events.Event; private var eventObj:Event; [Bindable(event="triggerBinding")] [NonCommittingChangeEvent(�change")] private var s:String; private function triggerBinding():void{ eventObj = new Event(�triggerBinding"); dispatchEvent(eventObj); } ]]> </mx:Script> <mx:Panel title="NonCommittingChangeEvent Sample" width="500" height="90" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal"> <mx:TextInput id="ti1" change="s=ti1.text" enter="triggerBinding()" /> <mx:TextInput id="ti2" text="{s}" /> </mx:Panel> </mx:Application> Listing 11 Custom Class CustomCircle using [Style] tags package { import mx.core.UIComponent; [Style(name="borderColor",type="uint",format="Color",inherit="no")] [Style(name="fillColor",type="uint",format="Color",inherit="no")] public class CustomCircle extends UIComponent { public function CustomCircle(){ super(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); graphics.lineStyle(1, getStyle(�borderColor"), 1.0); graphics.beginFill(getStyle(�fillColor"),1.0); graphics.drawEllipse(0,0,100,100); } } } Listing 12 Using CustomCircle and assigning custom style properties <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comps="*" backgroundColor="#FFFFFF"> <mx:Panel title="Style Sample" width="200" height="200" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal"> <comps:CustomCircle borderColor="#000000" fillColor="#FF0000" /> </mx:Panel> </mx:Application>
发表评论
-
应用避免访问浏览器缓存
2011-05-12 17:33 1388项目经常遇到这么个问题:程序做了改动之后,由于浏览 ... -
flex皮肤资源
2011-05-05 15:28 1299如果要找flex皮肤,这里的皮肤真是多。http: ... -
flex利用asdoc生成doc和制作chm
2011-04-02 17:33 1630How to set up ASDoc in Flex Bui ... -
restrict的应用实例
2011-04-02 11:54 11321. 限制某个字符的输入,用符号 ^ 跟上要限制的 ... -
flex中as、instanceof、is、 typeof用法
2011-03-24 09:48 4556“as” 我主要用它做类型转化 假设有一个类叫做 ... -
在Chart上画平均线的三种方法
2011-02-16 14:52 1425在Chart上画平均线的三种方法 ... -
Flex Frameworks
2010-11-12 15:32 1000Some say that if a t ... -
flex4国际化
2010-11-11 16:56 2125国际化变得如此简单 <?xml versi ... -
使用ToolTipManager自定义tooltip
2010-11-05 14:52 2621直接贴代码,一看就懂。 <?xml version=& ... -
flex 校验
2010-11-05 14:41 1035①flex中的校验可以使用mx.validator ... -
Flex中的fx、mx和s命名空间
2010-11-05 13:12 3390Flex 4带给我们的 ... -
socket中writeUTF和writeUTFBytes的区别
2010-11-03 10:25 2797Q:用writeUTF发送数据的时候,后台多 ... -
修改flex默认loading
2010-10-18 13:51 2525一: SWF Flex 2 PreloaderSWF ... -
AIR文件操作
2010-09-26 10:01 2928AIR文件操作(一):AIR文件基础 AI ... -
ActionScript 3.0 Socket编程
2010-09-17 17:25 1171在使用ActionScript3.0进行编程的时候需要注 ... -
as 对象深度拷贝
2010-08-20 10:32 992这是一篇关于as3中对象深度拷贝的问题今天自己总结下,便 ... -
Create a FlexUnit TestCase
2010-04-29 20:34 1045Problem How to create a Fle ... -
as3corelib
2010-04-29 20:10 1487google code :http://code. ... -
FusionCharts
2010-04-28 19:26 2370无意中接触到这个产品FusionCharts,3D ... -
flex datagrid自动换行
2010-04-19 17:10 2887以为datagrid的自动换行有多复杂,其实 ...
相关推荐
metadata-extractor-2.4.0.rar metadata-extractor-2.4.0.rar 获取 图片 exif 信息 使用方法: File jpegFile = new File("c:\\newchangetime.jpg"); Metadata metadata = JpegMetadataReader.readMetadata(jpeg...
为了安装`sql_metadata-1.10.0-py3-none-any.whl`,你需要拥有Python 3环境,并使用`pip`命令进行安装,如下: ```bash pip install sql_metadata-1.10.0-py3-none-any.whl ``` 安装完成后,你就可以在Python代码中...
3. **Models**:可能扩展了Eloquent模型,以便更好地支持metadata操作,如添加、更新和查询。 4. **Migrations**:如果metadata存储在数据库中,那么这里可能会包含用于创建metadata表的迁移文件。 5. **Seeds**:...
Display Metadata [3], while containing provisions for future HDR EOTFs and metadata. It is anticipated that these data structures will be extended to include additional EOTF and HDR metadata ...
赠送jar包:metadata-extractor-2.6.2.jar; 赠送原API文档:metadata-extractor-2.6.2-javadoc.jar; 赠送源代码:metadata-extractor-2.6.2-sources.jar; 赠送Maven依赖信息文件:metadata-extractor-2.6.2.pom;...
3. 设置代理:设置代理可以帮助Gradle Metadata正确加载。 在 Android Studio 中设置代理可以按照以下步骤进行: 1. 打开 Android Studio 设置:点击 Settings -> 搜索 proxy。 2. 设置代理服务器:输入 127.0.0.1...
3. **生成数据库DDL** 使用`DatabaseMetaData`生成数据库DDL的过程,主要是遍历数据库的所有表,获取每个表的列信息、主键、外键等,然后构造对应的SQL语句。例如,可以获取`getTables()`方法来获取所有表的信息,`...
赠送jar包:metadata-extractor-2.6.2.jar; 赠送原API文档:metadata-extractor-2.6.2-javadoc.jar; 赠送源代码:metadata-extractor-2.6.2-sources.jar; 赠送Maven依赖信息文件:metadata-extractor-2.6.2.pom;...
<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata> <!-- Ellipse fills and strokes for different states --> ``` 在这个例子中,我们定义了四种状态(up、over、down和disabled)...
资源分类:Python库 所属语言:Python 资源全名:importlib_metadata-3.9.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
提交 Flink 任务时失败,无论是从命令行中传入 topic 及 broker,还是从配置文件中读取 topic 及 broker,在等待 3~5 分钟之后,最后都返回“Timeout expired while fetching topic metadata”错误。 八、解决方案 ...
3. `README.md`:项目说明,包括如何使用和贡献的指南。 4. `LICENSE`:开源许可文件,规定了库的使用权限和条件。 5. `tests`目录:可能包含测试用例,用于验证库的正确性和性能。 为了使用`kotlin-metadata`库,...
赠送jar包:spring-plugin-metadata-2.0.0.RELEASE.jar; 赠送原API文档:spring-plugin-metadata-2.0.0.RELEASE-javadoc.jar; 赠送源代码:spring-plugin-metadata-2.0.0.RELEASE-sources.jar; 赠送Maven依赖信息...
本篇文章将深入探讨`reflect-metadata`的轻量级3KES模块实现,以及如何在实际项目中应用这一技术。 `reflect-metadata`库的核心在于提供了一种方式来在JavaScript对象上添加和检索元数据。元数据是附加到代码上的...
3. 获取元数据:使用jQuery选择器选择元素后,调用`.metadata()`方法即可获取元数据: ```javascript var metadata = $('.myElement').metadata(); console.log(metadata.key); // 输出 "value" ``` 四、应用...
"metadata-extractor-2.8.1" 是一个Java库,专门用于从各种图像和音频文件中提取元数据。这个库是由Dave Coffin创建并维护的,它支持大量的文件格式,包括JPEG、TIFF、PNG、PDF等。元数据通常包含关于文件的详细信息...
资源来自pypi官网。 资源全名:metadata_expander-0.2-py3-none-any.whl
3. `META.json`:可能包含了关于jQuery Metadata插件的元数据,如版本信息、作者、许可证等。 4. `README`:通常包含有关项目的基本信息、安装指南、使用方法等,是理解项目的关键文件。 5. `test`:测试文件夹,...
FLEX 项目的工作空间位于 Document and settings/user directory/adobe flash builder beta2.metadata 和 configuration 目录下。默认情况下,Flash Builder 会把 FLEX 应用程序编译到项目文件夹下面的一个名为“bin...
使用class="{}"的方式,必须引入包:jquery.metadata.js 可以使用如下的方法,修改提示内容: class="{required:true,minlength:5,messages:{required:'请输入内容'}}" 在使用equalTo关键字时,后面的内容必须加上...