论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

AS3中如何深拷贝(deep copy)对象

文章类别:Flash AS | 发表日期:2008-10-16 14:03:40

记得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,直接使用即可。

上一篇:{技巧}as3.0位操作学习技巧 人气:2724
下一篇:{实例}Flash as3.0烟花制作 人气:8600
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058