ActionScript3 元数据

元数据有如下几个用途:

  1. 提供给编译器使用,用于配置改变原有的代码行为,如Bindable、Embed、SWF等。
  2. 提供给IDE使用,让IDE能够给出更加人性化的帮助信息,如Exclude、Deprecated、Inspectable等。
  3. 为代码提供配置信息,结合程序的反射机制,可以从宏观上对程序行为进行干预,比如一些第三方框架提供的metadata。

自定义元数据的用处主要是用于上面提到的第三点,Flash的元数据无需定义,只需要在编译时加上对你使用的元数据的支持即可(这是因为在发布成正式版SWF时,metadata会被当做注释清理掉),如@刘锡涛所说。如果需要IDE提示,可使用4.5.1以上的FlexSDK,并模仿SDK内提供的metadata.xml编写自己的metadata.xml编译进一个独立的SWC里并引入到你目前开发的项目中,Flashbuilder会根据该配置文件提供代码提示功能。

在使用上,可以通过describeType对一个类或对象进行解析,从中提取metadata信息并对标注了的成员进行控制。举个例子:

 
  
  1. classBaseextendsSprite{
  2. [Interval(secends=5)]
  3. publicfunctionmove()
  4. {
  5. }
  6. }

如果你希望Base和Base的子类的实例被放置到舞台后,每5秒钟执行一次被标记了Interval的函数,就可以在Base里面加入对this的解析(当然通过宏观监听addedToStage事件的捕捉过程也可以,一般的框架也采用这种办法),找到被标记的函数,然后在addedToStage事件加上一个间时执行被标记函数的侦听器,就可以了,这样所有继承自Base的类的实例都可以支持Interval标签,而不需要写额外的逻辑来控制。

Flash的metadata和Java的Annotation是类似的技术,然而功能稍弱,也不是强类型,解析控制都没有Java来的方便,然而适当使用可以降低代码的复杂度,提高代码质量,同时用的时候也要谨慎,因为涉及到反射,对效率有很大的影响。

 -keep-as3-metadata+=InjectProxy,InjectMediator


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值