flex元标签event的使用
- Flex中的元标签列表如下:
标签 描述 [ArrayElementType("elementType")] 在数组中定义所有允许的数据类型。 [Bindable]
[Bindable(event="eventname")]声明一个属性可以在代码中使用数据绑定表达式,Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。 [DefaultProperty("propertyName")] 定义组件在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对象后,被该标签标识的属性,会从发送到服务端的数据中忽略掉。
[ArrayElementType]
使用ArrayElementType元数据标签可以让你定义数组元素的数据类型。
[ArrayElementType("Number")]
public var arr:Array;
事实上,MXML编译器只针对mxml代码中的ArrayElementType元数据标签的用法进行合理性检查。而对actionscript代码中的用法不进行合理性检查,通过试验可以知道,ArrayElementType标签此时是无效的。
也就是说,上面的声明是无效的~,只有在MXML里才能正确检查,你可以测试一下:
arr.push(1);
arr.push("name"); //并不会报错
Bindable绑定数据的例子
申明变量txt可绑定后,当txt值改变,绑定txt的Label显示的内容也会跟着改变。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
[Bindable]
private var txt:String = "Hello world.";
private function init():void
{
changeBtn.addEventListener(MouseEvent.CLICK,
function():void{txt="Hello World,Hello World."});
}
]]>
</mx:Script>
<mx:Label x="10" y="10" text="{txt}"/>
<mx:Button x="10" y="36" label="更新数据" id="changeBtn"/>
</mx:Application>
[DefaultProperty("propertyName")]
DefaultProperty元数据标签用来将一个单一属性设定为某个类的默认属性。它允许在一个容器标签内设定属性,而不用定义属性的名字。
package myComponents
{
import mx.controls.TextArea;
// 定义一个默认的属性defaultText,下例中的Hello将做为defaultText的值。
[DefaultProperty("defaultText")]
public class TextAreaDefaultProp extends TextArea {
public function TextAreaDefaultProp()
{
super();
}
// Define a setter method to set the text property
// to the value of the default property.
public function set defaultText(value:String):void {
if (value!=null)
text=value;
}
public function get defaultText():String {
return text;
}
}
}[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标签中添加事件处理函数来初始化该自定义类。
在mxml中元标签放在<fx:Metadata></fx:Metadata>标签里面[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方法获取它的值了。
在MXML里使用该组件:<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:MyComp="myComponents.*">
<MyComp:TextAreaDefaultProp>Hello</MyComp:TextAreaDefaultProp>
</mx:Application>