1、[ArrayElementType]
使用ArrayElementType元数据标签可以让你定义数组元素的数据类型。
程序代码:
[ArrayElementType("String")]
public var arrayOfStrings:Array;
[ArrayElementType("Number")]
public var arrayOfNumbers:Array;
[ArrayElementType("mx.core.UIComponent")]
public var arrayOfUIComponents:Array;
2、[Bindable]
Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。绑定数据的时候,你必须先使用元数据标签定义一下数据。
A simple use of [Bindable]
<?xml version="1.0" encoding="utf-8"?>
backgroundColor="#FFFFFF">
[Bindable]
private var me:String="Rich Tretola";
]]>
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal">
Bindable也可以用来绑定到事件
Using [Bindable] with getters and setters
<?xml version="1.0" encoding="utf-8"?>
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);
}
]]>
formatString="(###) ###-####" validPatternChars="#-() " />
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal">
3、[DefaultProperty]
DefaultProperty元数据标签用来将一个单一属性设定为某个类的默认属性。它允许在一个容器标签内设定属性,而不用定义属性的名字。
package comps
{
import mx.controls.Button;
[DefaultProperty("label")]
public class MyButton extends Button
{
}
}
Using the MyButton class wih [DefaultProperty]
<?xml version="1.0" encoding="utf-8"?>
xmlns:comps="comps.*">
Test
4、[Embed]
Embed元数据标签用来导入图片到程序。可以通过两种方式使用Embed。你可以将图片嵌入到ActionScript中并将其指派给一个变量,或者你也可以将图片直接指派给组件的属性。
方式一:
[Embed(source="myIcon.gif")]
[Bindable]
public var myIcon:Class;
方式二:
上面这两个例子产生的结果是一样的。创建myIcon类的好处是,它在一个类中只定义一次并可以绑定到程序中的多个组件。
5、[Event]
Event元数据标签用来声明那些被自定义类分派的事件。将这个元数据标签添加到类定义中之后,你就可以在MXML标签中添加事件处理函数来初始化该自定义类。
Custom ButtonLabel class using [Event]
package comps
{
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);
}
}
}
Using the ButtonLabel class with the labelChanged [Event]
<?xml version="1.0" encoding="utf-8"?>
xmlns:comps="comps.*" backgroundColor="#FFFFFF">
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;
}
]]>
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="absolute">
change="myButton.myLabel=buttonLabelTI.text" x="10" y="9"/>
6、[Effect]
Effect元数据标签用来定义一个自定义效果,当某个事件发生的时候该效果会被分派。
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 {
...
Add labelChangedEffect to the Component
Instantiation MXML Tag
labelChangedEffect="myEffect" x="10" y="39"/>
7、[IconFile]
IconFile是用来定义一个jpg,gif或者png文件的文件名的,它在你的自定义类中作为图标来使用。[Embed]元数据标签可以用来嵌入图片、SWF文件、音乐文件以及视频文件等,而IconFile则只是用来嵌入用来作为自定义类图标的文件。下面是一个IconFile的例子:
[IconFile("icon.png")]
public class CustomButton extends Button
{
}
8、[Inspectable]
Inspectable元数据标签可以用来定义那些能在代码提示和属性检测器(property inspector)中显示的属性。
<?xml version="1.0" encoding="utf-8"?>
[Inspectable(defaultValue="Visa",
enumeration="Visa,Mastercard,Discover,American Express",
category="Credit Card", type="String")]
public var ccType:String;
]]>
<?xml version="1.0" encoding="utf-8"?>
xmlns:comps="comps.*" >
9、[InstanceType]
当在一个模板对象中声明一个像IDeferredInstance这样的变量时,InstanceType元数据标签就用来声明对象的类型。
用法:
[InstanceType("package.className")]
10、[NonCommittingChangeEvent]
NonCommittingChangeEvent元数据标签在某个特定事件发生的时候可以防止变量在事件发生的过程中被更改。
Using [NonCommittingChangeEvent]
<?xml version="1.0" encoding="utf-8"?>
backgroundColor="#FFFFFF">
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);
}
]]>
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal">
11、[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;
}
}
12、[Style]
Style元数据标签用来为组件定义自定义样式属性的。只需要简单地将Sytle元数据标签添加到类的定义当然,然后就可以使用getSytle方法获取它的值了。
Custom Class CustomCircle using [Style] tags
package comps
{
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);
}
}
}
Using CustomCircle and assigning custom style properties
<?xml version="1.0" encoding="utf-8"?>
xmlns:comps="comps.*" backgroundColor="#FFFFFF">
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom=" 10" layout="horizontal">
文章来源: 我要学flash网(www.51xflash.com) 原文地址:http://www.51xflash.com/article/flex/201104/06-13653.html#
一、概述
Flex中的元数据标签用来向编译器提供有关如何编译应用程序的信息。元数据标签只在编译时发生作用。其语法形式为[Somelabel]。使用元数据标签可以让代码变得更加简洁易读,有时我们还需要借助元数据标签来实现特定的功能,同时,让我们的代码变得更有档次。但由于Flex中的元数据标签的种类和功能非常多,笔者特将这个元数据标签的功能和用法总结出来,便于大家和笔者自己复习和查找。
二、常用的元数据标签
序号 | 标签名 | 功能 |
1 | ArrayElementType | 指定Array元素的类型 |
2 | Bindable | 指定绑定数据源 |
3 | DefaultProperty | 指定类默认属性 |
4 | Deprecated | 元素过期标识 |
5 | Effect | 定义一个效果属性名称 |
6 | Embed | 用来向程序中嵌入JPEG、GIF、PNG、SVG等格式的图片文件及字体文件 |
7 | Event | 声明一个事件 |
8 | Exclude | 使FB的标签检查器忽略类中的某个元素。如果父类中的元素使用了这个标签,那么子类将不会继承这个元素 |
9 | ExcludeClass | 使FB标签检查器忽略类 |
10 | IconFile | 用来标自定义类指定一个图标,使组件在FB的插入面板中以该图显示。支持个是有PNG、GIF和JPEG |
11 | Inspectable | 指定一个IDeferredinstance类型属性的可取值的类型,这个值必须包含完整的包名。 |
12 | NonCommittingChangeEvent | 用来标记一个变量,当某个特定事件发生时暂时不会派发change事件,避免这个变量发生更改 |
13 | RemoteClass | 用来设定一个AS类,使该类与一个服务器端的类实现映射,以便于数据转换,服务器端的类可以是PHP、ASP.Net、Java类或ColdFusion CFC等 |
14 | Style | 用来为组件定义样式属性 |
15 | Transient | 当一个AS对象与服务器端对象简历映射关系后,被[Transient]元数据标签标识的属性会从发送到服务器的数据中忽略掉。 |
三、特殊的元数据标签
这些特殊元数据标签和前面介绍的常见元数据标签相比,其差别是,特殊元数据标签在Flex帮助文档中没有出现,而仅供Flex内部使用,而这些标签中的一部分对开发者来所还是有一定的实际意义,故在本节中做个小结。
序号 | 标签名 | 功能 | ||||||||||||||||||||||||||||||
1 | AccessibilityClass | 用来再组件中实现辅助功能 | ||||||||||||||||||||||||||||||
2 | ChangeEvent | 用来定义某个属性发生变化时派发的事件 | ||||||||||||||||||||||||||||||
3 | CollapseWhiteSpace | 用来清除多余的空白字符,可以在TextInput、TextArea、Label等组件的类定义中看到这个标签 | ||||||||||||||||||||||||||||||
4 | Frame | 1、允许在时间轴上包含多个帧; 2、取得类的定义,类似于import或getDefinitionByName | ||||||||||||||||||||||||||||||
5 | Mixin | 希望让某些代码先于其它代码执行,可以使用[Mixin]元数据标签,并创建init()方法 | ||||||||||||||||||||||||||||||
6 | PercentProxy | 使一个属性能够以百分比的形式接受数据 | ||||||||||||||||||||||||||||||
7 | ResourceBundle | 用来定义资源包,通常可以使用该标签为Flex应用程序添加多语言资源包,包含文本、图片及SWF文件等多种资源。 | ||||||||||||||||||||||||||||||
8 | SWF | 用来在AS项目中定义SWF文件的参数。它必须放在项目主类的类定义之前。
|
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权,作者将保留追究法律责任的权利。另外,也请转载者在评论处留下转载信息,谢谢合作。