registerClassAlias | | |
当以 Action Message Format (AMF) 对一个对象进行编码时,保留该对象的类(类型)。将对象编码为 AMF 时,该函数将保存该对象的类的别名,以便在解码对象时可以恢复该类。如果编码上下文没有为对象的类注册别名,该对象将被编码为一个匿名对象。同样,如果解码上下文注册了不同的别名,将为解码后的数据创建一个匿名对象。
LocalConnection、ByteArray、SharedObject、NetConnection 及 NetStream 均为将对象编码为 AMF 的类的示例。
编码和解码上下文不必对别名使用相同的类。它们可以主动地改变类,条件是目标类包含源类序列化的所有成员。
参数
aliasName:String — 要使用的别名。 | |
classObject:Class — 与给定别名相关联的类。 |
示例 ( 如何使用本示例 )
此示例使用
registerClassAlias()
函数为 ExampleClass 注册一个别名 ( com.example.eg
)。由于为类注册了别名,因此可以将对象作为 ExampleClass 的实例反序列化,且代码将输出 true
。如果删除registerClassAlias()
调用,则代码将输出 false
。
package {
import flash.display.Sprite;
import flash.net.registerClassAlias;
import flash.utils.ByteArray;
public class RegisterClassAliasExample extends Sprite {
public function RegisterClassAliasExample() {
registerClassAlias("com.example.eg", ExampleClass);
var eg1:ExampleClass = new ExampleClass();
var ba:ByteArray = new ByteArray();
ba.writeObject(eg1);
ba.position = 0;
var eg2:* = ba.readObject();
trace(eg2 is ExampleClass); // true
}
}
}
class ExampleClass {}
import flash.display.Sprite;
import flash.net.registerClassAlias;
import flash.utils.ByteArray;
public class RegisterClassAliasExample extends Sprite {
public function RegisterClassAliasExample() {
registerClassAlias("com.example.eg", ExampleClass);
var eg1:ExampleClass = new ExampleClass();
var ba:ByteArray = new ByteArray();
ba.writeObject(eg1);
ba.position = 0;
var eg2:* = ba.readObject();
trace(eg2 is ExampleClass); // true
}
}
}
class ExampleClass {}