`
oncesorrows
  • 浏览: 11275 次
社区版块
存档分类
最新评论

学习Flex元数据标签

    博客分类:
  • Flex
阅读更多
Flex 元数据标签
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"?>
<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>

Bindable也可以用来绑定到事件
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>

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"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 xmlns:comps="comps.*">
 <comps:MyButton>
  <mx:String>Test</mx:String>
 </comps:MyButton>
 
</mx:Application>

4、[Embed]
Embed元数据标签用来导入图片到程序。可以通过两种方式使用Embed。你可以将图片嵌入到ActionScript中并将其指派给一个变量,或者你也可以将图片直接指派给组件的属性。
方式一:
[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}"/>

方式二:
<mx:Button label="Icon Button 1" icon="@Embed(source=myIcon.gif')"/>
<mx:Button label="Icon Button 2" icon="@Embed(source=myIcon.gif')"/>

上面这两个例子产生的结果是一样的。创建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"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 xmlns:comps="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>

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
<comps:ButtonLabel id="myButton" labelChanged="labelChanged(event);"
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"?>
<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>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 xmlns:comps="comps.*" >
 <comps:MyComponent ccType=""/>
</mx:Application>
 

9、[InstanceType]
当在一个模板对象中声明一个像IDeferredInstance这样的变量时,InstanceType元数据标签就用来声明对象的类型。
用法:
[InstanceType("package.className")]
 


10、[NonCommittingChangeEvent]
NonCommittingChangeEvent元数据标签在某个特定事件发生的时候可以防止变量在事件发生的过程中被更改。
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>
 

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"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 xmlns:comps="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>
0
0
分享到:
评论

相关推荐

    flex学习小记录

    3. `.project` - 这是Eclipse项目的基本配置文件,定义了项目类型、构建指令和其他元数据。 4. `html-template` - 可能是一个自定义的HTML模板,用于生成Flex应用程序的SWF嵌入页面,可能包含了自定义的加载界面或...

    flex 绑定元数据

    在Flex编程中,[Embed]标签属于元数据标记之一,它的作用是将外部的资源(如图片、声音、视频等)嵌入到应用程序中。嵌入后,这些资源可以通过类的形式在应用程序中被引用。具体来说,[Embed]标签通过指定资源的路径...

    flex map

    "Flex Map"是一个在IT行业中涉及的...通过阅读提供的博客文章和研究压缩包内的`library.swf`和`catalog.xml`文件,开发者可以学习如何在Flex项目中创建和自定义地图功能,以及如何利用资源库和元数据进行更有效的开发。

    FLEX 数据绑定专题一(转)

    2. ActionScript数据绑定:在ActionScript代码中,可以使用Bindable元标签声明类的属性为可绑定的,然后使用`bindable`关键字定义绑定表达式。 数据绑定的应用场景: 数据绑定在FLEX中广泛应用于各种场景,包括但不...

    FLEX从入门到精通.pdf

     5.1.2 学习Flex和获取帮助  5.2 FlexBuilder3工作台  5.2.1 工作区  5.2.2 创建和交换工作区  5.2.3 工作区配置  5.2.4 编辑器  5.2.5 视图  5.2.6 透视图  5.2.7 创建自定义透视图  5.3 Flex...

    Baidu-Mobile-Flex.rar_flex_flex mobile

    3. **SWC文件**: SWC是Flex的库文件格式,可以包含ActionScript类、资源、元数据和库元数据。开发者可以将SWC文件作为库引入到他们的项目中,以便重用代码和组件。 4. **百度地图API**: 百度地图提供了丰富的API...

    Flex4流程设计的学习

    1. `[Embed(parameter1, parameter2, ...)]` 元数据标签,通常用于AS文件或MXML文件中的`&lt;mx:Script&gt;`标签内。 2. `@Embed(parameter1, parameter2, ...)` 指令,主要用于MXML标签中。 3. `Embed(parameter1, ...

    Flex导航菜单

    2. `.project`:这是Eclipse项目的元数据文件,描述了项目结构和属性,使得IDE可以正确识别和管理项目。 3. `src`:源代码目录,通常包含MXML和ActionScript类文件,可能有实现导航菜单功能的自定义组件。 4. `bin...

    flex数据绑定

    此外,还可以使用`bindable`元数据标签来声明可绑定的类成员。 2. ActionScript数据绑定: 在ActionScript中,我们可以使用`Binding`类或`mx.binding.utils.BindingUtils`静态方法来实现数据绑定。例如,`...

    flex4.5学习笔记

    - **结构**: 包含状态(`&lt;s:states&gt;`)定义、元数据(`&lt;fx:Metadata&gt;`)以及界面元素定义。 - **组件定义**: 通过`&lt;s:Group&gt;`、`&lt;s:Rect&gt;`等元素定义界面布局与样式。 - **皮肤应用**: 在应用中通过`skinClass`属性...

    Flex裁剪图片

    4. **Embed标签**:在提供的文件名称列表中提到了`[Embed]`标签,这是一个用于嵌入外部资源的元数据标签。在Flex中,可以使用它来静态地加载SWF、图像、字体等资源。对于图片裁剪,我们可能需要使用Embed标签来加载...

    flex 网站下载 可运行

    2. `.flexProperties`:此文件存储了Flex项目的一些元数据,如Flex SDK版本、编译目标等,是Flex项目的重要配置文件。 3. `.project`:这是Eclipse IDE的项目配置文件,包含了项目的基本信息、构建指令和其他IDE...

    flex 第一步的bug

    - **元数据标签**:在ActionScript中,元数据标签(如`[Bindable]`)是一种特殊的标签,它们位于代码的上方,以闭合的中括号表示。这些标签提供了额外的信息给编译器,例如如何处理接下来的代码。 - **数据绑定**:`...

    Flex+spring+hibernate整合视频学习交流part_2

    1. **version.properties**:这是版本信息文件,通常用于记录项目的版本号或者其他元数据,可能在集成环境中用于版本控制或自动化构建过程。 2. **library.swf**:这是Flex的库文件,包含了一系列预定义的组件和图形...

    Flex MP3播放器

    打开这个文件,开发者可以深入研究播放器的内部工作原理,例如如何加载MP3文件,如何处理播放控制,以及如何显示音频元数据等。通过学习和理解源码,你可以了解Flex应用程序的设计模式,增强自己的ActionScript和...

    openflashchart for flex demo

    2. **catalog.xml**:这是一个元数据文件,通常用于描述Flex项目的组件或资源。在这个案例中,它可能包含了关于图表类型、数据源和其他配置的定义,帮助Flex知道如何生成和展示图表。 3. **locale**:这可能是一个...

    flex+java增删改查(spring+jpa)简单例子

    7. **源码分析**: 提到的"源码"标签表明这个压缩包可能包含了整个项目的源代码,包括Flex前端和Java后端的代码,供学习者参考和理解。 8. **工具**: 可能涉及的工具可能有Flex Builder或Flash Builder(用于Flex...

    Flex第一步书中整套源码

    `catalog.xml`可能包含了书中的各种组件和类的元数据,帮助开发者理解和组织项目中的资源。 综合以上信息,我们可以了解到,这套源码涵盖了Flex基础编程的各个方面,包括但不限于组件使用、事件处理、数据绑定、UI...

    flex 代码 代码啊

    2. `.flexProperties`:这是另一个项目配置文件,用于存储Flex构建过程中的元数据,包括Flex SDK版本、主类、输出位置等。了解如何配置这些属性可以帮助开发者定制开发环境。 3. `.project`:这是Eclipse通用的项目...

    用flex实现苹果样式的弹出菜单

    在Flex中,可以使用` Embed`元标签将图片资源嵌入到项目中,然后在`Image`组件中引用它们。 7. **响应式设计**:考虑到跨平台兼容性,确保弹出菜单在不同屏幕尺寸和分辨率下都能良好显示。使用Flex的响应式设计原则...

Global site tag (gtag.js) - Google Analytics