flex类的深复制(扩展)

来源:互联网 发布:在线标准工资算法公式 编辑:程序博客网 时间:2024/05/01 12:26

1:假如你要深复制一个类A

public class A

{

  public var vo:B

}

你首先要做的是注册类,例如:

public static function registerClass():void
  {

  //把子类注册
   PackUtil.registerClass(B);
  }

//接下来就是克隆:

  var cloneA:A=clone(A);

cloneA就是我们想要的对象了。

 

//****************克隆的实现方法***********************//

//克隆一个vo对象
  public  static function clone(o:Object):Object
  {
   var qClassName:String = getQualifiedClassName(o);
            var objectType:Class = getDefinitionByName(qClassName) as Class;
            registerClassAlias(qClassName, objectType);
            var copier : ByteArray = new ByteArray();
            copier.writeObject(o);
            copier.position = 0;
            return copier.readObject();
  }
  
  //向amf注册类,以便反转的时候能找到该类

  public  static function registerClass(classObj:Object):void
  {
     var qClassName:String = getQualifiedClassName(classObj);
            var objectType:Class = getDefinitionByName(qClassName) as Class;
            registerClassAlias(qClassName, objectType);
  }

原创粉丝点击