`

flex对象深拷贝以及Array的深拷贝

    博客分类:
  • flex
阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init1()">
	<mx:Script>
		<![CDATA[
			import mx.containers.Panel;
			import mx.controls.Alert;
			import test.TestCopy;
			
			
			//对象的深拷贝
			public function init1(){
				var by:ByteArray=new ByteArray;
				var tc:TestCopy=new TestCopy;
				tc.i=1;
				tc.point=new Point(10,20);
				by.writeObject(tc)
				by.position=0;//必须移指针到0位置,否则报 “到文件末尾”
				var tbc=by.readObject();
				tbc.point=new Point(1,1);
				mx.controls.Alert.show(tc.point+":"+tbc.point);//{10,20}:{0,0};
			}
			//数组深拷贝
			public function init2(){
				var arr:Array=new Array;
				
				var tx:TestCopy=new TestCopy;
				
				tx.i=1;
				
				arr.push(tx);
				
				var by:ByteArray=new ByteArray;
				
				by.writeObject(arr);
				
				by.position=0;
				
				var arr1=by.readObject();
				
				arr1[0].point=new Point(20,30)
				
				Alert.show(arr1[0].point+"old"+arr[0].point);//{20,30},{0,0}
			}
		]]>
	</mx:Script>
</mx:Application>

 

package test
{
	import flash.geom.Point;
	
	public class TestCopy
	{
		public var i:int;
		public var point:Point;
		public function TestCopy()
		{
		}

	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics