Flex中的元数据标签(Metadata tags)二

4 Embed

Embed标签用来导入图片等到程序。可以通过两种方式使用embed。

下面代码展示了两种给一个button加icon的例子

 <mx:Script>
	 	<![CDATA[
	 		[Embed(source="com/assget/close.png")]
			[Bindable]
			public var myIcon:Class;
			
	 	]]>
	 </mx:Script>
	 <mx:Button label="Embed tag1" icon="{myIcon}"/>
	 <mx:Button label="Embed tag2" icon="@Embed(source='com/assget/close.png')"/>

 

推荐使用一个变量的方式加载icon,因为这个变量可以重复使用。

 

5 Event

Event用来声明那些被自定义的事件,将这个元数据标签定义到类之后就可以在mxml标签中添加事件监听了。

例如:定义了myEnableEvent事件。

   <mx:Metadata> 
        [Event(name="myEnableEvent", type="flash.events.Event")] 
    </mx:Metadata> 

 在下面的代码中,我们就可以处理myEnableEvent事件了。

 

经过测试发现,其实上面的代码是可以省略掉的,但是个人觉得还是写上的好。因为这样的代码看着比较清晰,特别是自定义的事件。

 

6 Effect

这个和event的用法差不多,[Effect(name="eventNameEffect", event="eventName")]

就不说了

7 IconFile

 IconFile 是用来定义一个jpg,gif或者png文件的文件名的,它在你的自定义类中作为图标来使用。[Embed]元数据标签可以用来嵌入图片、SWF文件、音 乐文件以及视频文件等,而IconFile则只是用来嵌入用来作为自定义类图标的文件。下面是一个IconFile的例子:
     [IconFile(”icon.png”)]
     public class CustomButton extends Button{}

不过这个我试了没见效果,不知道为什么?

8 Inspectable

在flexbuilder中,一个属性的提示就是这个标签的功劳。这个在自定义组件中很重要的,能给使用者提供一个属性值的下拉列表框。

先看一个自动完成的例子,

package com.beyondsoft.widgets
{
	import mx.controls.ComboBase;

	public class AutoComponent extends ComboBase
	{
		public function AutoComponent()
		{
			super();
		}
		
		[Inspectable(defaultValue="any",
		enumeration="any,first,last,only",
		category="Other",type="String")]
		//匹配的模式有四种any,first,last,only,默认值为any
		public var matchType:String;

	}
}

 

通过以上的简单配置,在flexbuilder中matchType就有四个下拉框了,而且默认值为any了。

下面的代码设置了,boolean类型数据的提示

[Inspectable(defaultValue=true,
category="Common")]
public var isCheck:Boolean;

 

9.RemoteClass

RemoteClass 可以用来将一个ActionScript类绑定到一个Java类或一个ColdFusion CFC。这样做可以自动转换数据类型。下面的例子将包com.mydomain中的名为MyClass的ActionScript类绑定到了同一个包中名 为MyClass的Java类:

package com.beyondsoft.widgets
{
	[Bindable]
	[RemoteClass(alias="com.mydomain.MyClass")]
	public class MyClass
	{
		public function MyClass()
		{
		}

	}
}

 RemoteClass 在flex的mvc框架中是经常用到的。

 

10 Style

Style元数据标签用来为组件定义自定义样式属性的。只需要简单地将Sytle元数据标签添加到类的定义当然,然后就可以使用getSytle方法获取它的值了。如果想自定义组件,那得好好学习它了。

 下面的例子中,定义了一个自己的样式customColor,用getStyle("customColor")得到此样式的值。

package com.beyondsoft.widgets
{
	import mx.core.UIComponent;

	[Style(name="customColor",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);
			this.graphics.lineStyle(1,this.getStyle("customColor"),1.0);
			this.graphics.beginFill(112211,1.0);
			this.graphics.drawEllipse(0,0,100,100);
		}
	}
}

 调用此组件

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout="vertical"
	 xmlns:local="com.beyondsoft.widgets.*">
	<local:CustomCircle customColor="#00ffcc"/>
</mx:Application>

 

下面是是元数据标签的列表

标签 描述
[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对象后,被该标签标识的属性,会从发送到服务端的数据中忽略掉。

你可能感兴趣的:(Flex,嵌入式,Adobe,actionscript,ColdFusion)