今天同事问我有as3中对象深度拷贝的问题
原来还真是没用过,今天google后自己总结下,便于大家参考
as3中通过ByteArray可以进行对象的深度拷贝
import flash.utils.ByteArray; import flash.utils.getQualifiedClassName; import flash.net.*; import src.*; function cloneObject(source:Object) :* { var typeName:String = getQualifiedClassName(source);//获取全名 trace(”输出类的结构”+typeName); //return; var packageName:String = typeName.split(”::”)[0];//切出包名 trace(”类的名称”+packageName); var type:Class = getDefinitionByName(typeName) as Class;//获取Class trace(type); registerClassAlias(packageName, type);//注册Class
//复制对象 var copier:ByteArray = new ByteArray(); copier.writeObject(source); copier.position = 0; return copier.readObject(); }
有的人说用复制对象那一段不就可以了吗,但是实际上行不通 对于数组深度复制来说, 复制对象的后面4句代码就足够了
var a1:Array=[1,2,3];
var a2:Array =cloneObject(a1);
var a3:Array = a1; a1.push(”youmila”); trace(”a1:”+a1+”a2:”+a2+”a3″+a3);
但是对于对象来说肯定不行
用列子测试下 src.youmila.as 代码:
package src{ public class youmila{ private var
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
name:String =”youmila”; private var
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num:Number =0; public function youmila():void{ trace(
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
name);
}
public function secondFunc():void{
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num++; trace(”this a called function
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num::”+
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num);
} }
}
yapollo.as 代码:
package { public class yapollo{ private var
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
name:String =”yapollo”; public var
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num:Number =0; public function yapollo():void{ trace(
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
name);
} public function secondFunc():void{
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num++; trace(”this a called function
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num::”+
as3中通过ByteArray进行对象的深度拷贝 - 凌众科技
快速业务通道
as3中通过ByteArray进行对象的深度拷贝
作者 凌众技术
来源 网页制作
浏览
发布时间 2012-03-08
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
num);
}
} }
测试实例
var uml1:youmila = new youmila(); var uml2 = cloneObject(uml1); trace(”类型”+getQualifiedClassName(uml2)); 输出结果:
youmila 类型Object 原来的对象类型丢失了,所以对于对象而言,四行不够,必须 用registerClassAlias来保存类的别名,以用于丢失后恢复类的类型 测试实例
var uml1:youmila = new youmila();
var uml2 = cloneObject(uml1); trace(”类型&r |