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 {}

 

 

posted @ 2014-04-16 20:07  ddw1997  阅读(365)  评论(0编辑  收藏  举报