registerClassAlias()函数和getClassByAlias()函数
flash.net 包中包含包级函数,可用于打开新的浏览器窗口,向服务器发送 URL 请求以及处理类别名。
registerClassAlias()函数
public function registerClassAlias(aliasName:String, classObject:Class):void
当以 Action Message Format (AMF) 对一个对象进行编码时,保留该对象的类(类型)。将对象编码为 AMF 时,该函数将保存该对象的类的别名,以便在解码对象时可以恢复该类。如果编码上下文没有为对象的类注册别名,该对象将被编码为一个匿名对象。同样,如果解码上下文注册了不同的别名,将为解码后的数据创建一个匿名对象。
LocalConnection、ByteArray、SharedObject、NetConnection 及 NetStream 均为将对象编码为 AMF 的类的示例。
编码和解码上下文不必对别名使用相同的类。它们可以主动地改变类,条件是目标类包含源类序列化的所有成员。
参数
aliasName:String — 要使用的别名
classObject:Class — 与给定别名相关联的类
引发
TypeError — 如果任一个参数为 null
getClassByAlias()函数
public function getClassByAlias(aliasName:String):Class
查找一个类,这个类先前具有一个通过调用 registerClassAlias() 方法进行注册的别名。
此方法不与 flash.utils.getDefinitionByName() 方法进行交互。
参数
aliasName:String — 要查找的别名
Class — 与给定别名相关联的类。如果未找到,将引发异常
引发
ReferenceError — 未注册别名
示例:
此示例使用 registerClassAlias() 函数为 ExampleClass 注册一个别名 ( com.example.eg )。由于为类注册了别名,因此可以将对象作为 ExampleClass 的实例反序列化,且代码将输出true。如果删除 registerClassAlias() 调用,则代码将输出 false。
1 package { 2 import flash.display.Sprite; 3 import flash.net.registerClassAlias; 4 import flash.utils.ByteArray; 5 6 public class RegisterClassAliasExample extends Sprite { 7 public function RegisterClassAliasExample() { 8 registerClassAlias("com.example.eg", ExampleClass); 9 var eg1:ExampleClass = new ExampleClass(); 10 var ba:ByteArray = new ByteArray(); 11 ba.writeObject(eg1); 12 ba.position = 0; 13 var eg2:* = ba.readObject(); 14 trace(eg2 is ExampleClass); // true 15 } 16 } 17 } 18 19 class ExampleClass {}