• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • AS3中如何深拷贝(deep copy)对象

  • 来源:flashshe.com 作者:flashshe 2008-10-08 【
记得flash帮助文档 Programming ActionScript 3.0 / Core ActionScript 3.0 Data Types and Classes / Working with arrays /Cloning arrays 一节讲了如何深克隆(deep copy)一个数组的方法,以前一直以为这个方法只对数组有用,其实这个方法适用于所有的对象。

下面是我的例子:
程序代码 程序代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute" creationComplete="completeHandler()">
    <mx:Script>
        <![CDATA[
            import mx.controls.Button;
            import flash.utils.ByteArray;

            public function clone(source:Object):*
            {
                var myBA:ByteArray = new ByteArray();
                myBA.writeObject(source);
                myBA.position = 0;
                return(myBA.readObject());
            }
            
            
            private var c1:CloneClass;
            private var c2:Object;
            
            private function completeHandler():void
            {
                c1 = new CloneClass();
                c1.age = 30;
                c1.button = new Button;
                c1.button.label = "c1";
                
                c2 = clone(c1);
                trace("c1: " + c1.age + "  " + c1.button.label); // 输出 c1: 30  c1
                trace("c2: " + c2.age + "  " + c2.button.label); // 输出 c2: 30  c1
            }
            
            private function change():void
            {
                c1.age = 50;
                c1.button.label = "cc1";
                trace("after changed --------------------------------");
                trace("c1: " + c1.age + "  " + c1.button.label); // 输出 c1: 50  cc1
                trace("c2: " + c2.age + "  " + c2.button.label); // 输出 c2: 30  c1
            }
            
        ]]>
    </mx:Script>
    <mx:Button x="106" y="97" label="Change" click="change()"/>
        
</mx:Application>


CloneClass 类
程序代码 程序代码

package
{
    import mx.controls.Button;
    
    public class CloneClass
    {
        public var button:Button;
        public var age:uint = 1;
        
        
        public function CloneClass()
        {
        }

    }
}

Flex框架中已经包含了这个方法 mx.utils.ObjectUtil.copy(value:Object):Object,直接使用即可。



上一篇:TweenLite缓动类中文说明文档   下一篇:位操作学习心得一(as3.0)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)