Objot 版本23 Actionscript端手册


版权所有2007-2015蔡倩彦,采用GNU LGPL版本2.1许可模式。

关于Java端开发请参考《Objot 版本23 Java端手册》。 关于Javascript端开发请参考《Objot 版本23 Javascript端手册》

数据编解码

参考《Objot 版本23 Java端手册》数据编解码

public class objot.codec.Codec

编解码。

public function enc(o:Object, ruleKey:Object):String
编码,使用的规则与 每个编码的数据 及ruleKey相关。
public function dec(str:String):Object
解码。暂不支持解码规则。
protected function name(o:Object, c:Class):String
编码时指定名字。 c = o.constructor as Class,既可给每个类,也可以给每个对象指定不同的名字。 默认是:
return c == Object || c == null ? '' : getQualifiedClassName(c);
protected function byName(name:String):Object
解码时,根据名字得到对象(注意,返回对象的类,也不会自动调用构造方法,这与Java端不同)。默认是:
return name == '' ? {} : new (getDefinitionByName(name));
public function clazz(cf:Object):Rule
分析一个类,返回编码规则。既可能在编码时被动调用,也可以主动调用。默认是:
// 查找this.rules,若已经分析过,则直接返回分析结果
// 创建Rule对象
// 如果cf是Function,调用Rule.initFunc,否则调用Rule.initClass
// 将结果放入this.rules,并返回
protected var rules:Dictionary;
保存生成的编码规则。
public function Codec(sameRule:Codec = null)
构造方法。若sameRule为null,编码规则独立于其他Codec对象,否则编码规则和sameRule共用,并保持相同。

[Enc]

标记在类、属性(variable、accessor)上的metadata,表示需要编码。

可以设置参数,表示指定哪些key时需要编码,作为编码规则。 与各个参数都不相同的key,则禁止编码。不指定参数,表示任何key时,都需要编码。

标记在类上的[Enc],其规则附加在各属性的[Enc]上。

参数是字符串,必须符合xml的attribute格式。

[EncDynamic]

标记在类上的metadata,表示动态属性需要编码。

可以设置参数,表示指定哪些key时需要编码动态属性,作为编码规则。 与各个参数都不相同的key,则禁止编码动态属性。不指定参数,表示任何key时,都需要编码。

参数是字符串,必须符合xml的attribute格式。

特别注意:[Enc]和[EncDynamic]必须在编译时指定保留,否则编译后的文件将不包含这两个metadata。 编译参数:-compiler.keep-as3-metadata Enc EncDynamic。 或者配置文件:

<compiler>
<keep-as3-metadata>
	<name>Enc</name>
	<name>EncDynamic</name>
</keep-as3-metadata>
</compiler>

public class objot.codec.Rule

编码规则。默认是分析metadata,生成相关数据。

public function encProps(ruleKey:Object):Array
指定key时,需要编码的属性名的数组。
public function encDynamic(ruleKey:Object):Boolean
指定key时,是否需要编码动态属性。
public function initFunc(f:Function):void
初始化。默认是对任何key,需要编码动态属性。
public function initClass(c:Class):void
初始化。默认是
// 获取类的metadata
// 如果有[EncDynamic],则生成相关的信息,供encDynamic()使用。
// 如果有[Enc],则生成相关信息,以便作用于每个属性的[Enc]
// 获取每个属性的metadata
// 如果有[EncDynamic],则抛出异常
// 如果有[Enc],对于static,writeonly的属性,抛出异常
// 否则生成相关信息,供encProps()使用。

辅助功能

参见源代码。

public class objot.util.Array2

与xml转换。与object的name/value转换。

public class objot.util.Cast

对Array、Boolean、Date、Number、String、XML、XMLList等做无convert的严格类型转换。

public class objot.util.Class2

初始化类,并得到类定义等相关信息。

父类。判断是否父类。判断是否父类或接口。

public class objot.util.Err, Errs

对异常的封装,与Java端对应。

抛出Error的方法,以便放入表达式中。

public class objot.util.Meta, MetaArg, Metas, Method, Param, Prop

类定义等信息。

public class objot.util.String2

将对象转换成字符串,并限制长度。