zoukankan      html  css  js  c++  java
  • Flex中的元标签及使用

    元数据标签是一种特殊的标签,它在代码中的作用就是向编译器提供如何编译程序的信息。
    实际上,这些标签并没有被编译到生成的SWF文件中,而只是告诉编译器如何生成SWF 文件。

    Flex中的元标签列表如下:

    标签 描述
    [ArrayElementType("elementType")] 在数组中定义所有允许的数据类型。
    [Bindable]
    [Bindable(event="eventname")]
    声明一个属性可以在代码中使用数据绑定表达式,Bindable可以用来绑定简单数据类型、类、复杂数据类型以及函数。
    [DefaultProperty("propertyName")] 定义组件在MXML中使用时的默认属性的名称。
    [Deprecated] 标识一个类或类的元素是不推荐使用的,这样编译器能认出他并在被调用时给出一个警告信息。
    [Effect] 定义MXML的特效属性名称。
    [Embed] 在编译时导入 JPED,PNG,SVG 或 SWF文件。也会导入SWC文件的图片资源。他的功能等同于MXML中的 @Embed 语法。
    [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;
    }
    }
    }

    在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>


  • 相关阅读:
    (15)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第三部分(完)
    (14)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第二部分
    (13)如何使用Cocos2d-x 3.0制作基于tilemap的游戏:第一部分
    (12)瓦片地图
    (11)粒子系统
    (10)场景转换(Transitions)
    (9)SpriteFrameCache和TextureCache
    LeetCode:数组中的第K个最大元素【215】
    LeetCode:累加数【306】
    LeetCode:组合总数III【216】
  • 原文地址:https://www.cnblogs.com/sange/p/1809435.html
Copyright © 2011-2022 走看看