AS3自定义注解的声明与使用

    JAVA注解是一个非常有用的机制,在不改变代码的情况下就可以轻松为成员增加注解从而实现注入等操作。其实在AS3中也存在这种机制,而且相比JAVA,使用上更为简单。


    想要使用注解,首先需要了解下AS3的反射,网络上相关文章大把,这里不再多做陈,仅仅列举出一些方法。


    getQualifiedClassName(value:*) ;  获得某个实例或者类对象的完全限定类名。  完全限定类名就是  类的包名 + :: + 类名,

                                                                   比如 Sprite 类的完全限定类名就是  flash.display::Sprite

    getDefinitionByName(value:*);         获得指定的类的类对象引用。 将类的限定名传入即可获得这个类对象


    describeType(value:*);                      生成一个描述指定对象或类型的描述,格式为XML 。


    获取注解最多就使用以上的三个方法,方便吧!


    而注解的实现用不需要单独写一个注解类来实现,你直接在现有的AS3代码中直接写一个不存在的的注解即可实现,需要附带参数时只需在注解名后面的括号内定义即可

    这是一个AS3的自定义注解:

package com
{
	public class Annotation
	{
		private var _id:String;
		
		public function Annotation()
		{
			
		}
		
		[MyAnnotation(a=1,b=2)]
		public function get id():String
		{
			return _id;
		}

		public function set id(value:String):void
		{
			_id = value;
		}
	}
}

    在程序入口处写下代码:

    var xml:XML = describeType(Annotation);

    trace(xml);


    输出信息:

<type name="com::Annotation" base="Class" isDynamic="true" isFinal="true" isStatic="true">
  <extendsClass type="Class"/>
  <extendsClass type="Object"/>
  <accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
  <factory type="com::Annotation">
    <extendsClass type="Object"/>
    <accessor name="id" access="readwrite" type="String" declaredBy="com::Annotation">
      <metadata name="MyAnnotation">
        <arg key="a" value="1"/>
        <arg key="b" value="2"/>
      </metadata>
      <metadata name="__go_to_definition_help">
        <arg key="pos" value="177"/>
      </metadata>
      <metadata name="__go_to_definition_help">
        <arg key="pos" value="240"/>
      </metadata>
    </accessor>
    <metadata name="__go_to_ctor_definition_help">
      <arg key="pos" value="95"/>
    </metadata>
    <metadata name="__go_to_definition_help">
      <arg key="pos" value="30"/>
    </metadata>
  </factory>
</type>

    仔细查看就可以发现我们的注解就在字段描述的 metadata 下。  同理 你可以试一试方法的注解、静态成员的注解。  注意:静态成员的反射必须传入类对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值