`
junjie.li1985
  • 浏览: 50395 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ActionScript 3.0 对象克隆

阅读更多

对象克隆可以复制出一个和已存在对象相同的对象,并且两个对象没有关联。ActionScript 3.0中克隆对象使用的是ByteArray类。方法很简单,如下:

private function clone(obj:Object):* {
            var copier:ByteArray = new ByteArray();
            copier.writeObject(obj);
            copier.position = 0;
            return copier.readObject();
}

clone方法可以对对象实例进行深度拷贝,这些对象包括系统内置的对象实例、自定义普通对象实例、自定义动态对象实例等等。

但是有值得注意的地方,这个方法可以深度拷贝你的对象,但是它不会一同拷贝类的类型定义。所以,如果查需要拷贝一个自定义类型实例时,拷贝出的对象将不再是自定义类型,而是Object,因此在拷贝自定义类型对象的实例时,不要进行强制类型转换,否则将会得不到想要的结果。

下面是示例程序:

-----------------------------------------------------

/**

 *   动态类Person

 *   文件:Person.as

 */

package
{
    public dynamic class Person
    {
        public function Person()
        {
        }
    }
}

------------------------------------------------------

/**

 *   测试类: TestEx

 *   文件: TestEx.as

 */

package {
    import flash.display.Sprite;
    import flash.utils.ByteArray;

    public class TestEx extends Sprite
    {
        public function TestEx() {

            // copy 动态类对象
            var personA:Person = new Person();
            personA.name = "Flex";
            personA.age = 23;
            personA.sex = "Male";
           
            var personB:* = clone(personA);

            // 1. 上面一句如果用了as进行强制类型转换,personB == null;

            // 如果使用var personB:Person = Person(clone(personA)); 则会出现TypeError异常;


            personA.name = "Janet";
            personA.age = 25;
            personA.sex = "Female";
            trace("personA=", personA.name, personA.age, personA.sex);
            trace("personB=", personB.name, personB.age, personB.sex);

            // 2. copy 系统内置普通对象,不需要强制类型转换;
            var arr:Array = [1, 2, 3];
            var arrCopy:Array = clone(arr);
            arr = [3, 2, 1];
            trace("arr=", arr);
            trace("arrCopy=", arrCopy);

            // 3. copy 自定义普通对象,同样不能进行强制类型转换,否则将出现与”1“一样的情况;
            var dog:Animal = new Animal();
            dog.dogName = "Bobby";
            var copyDog:* = clone(dog);
            dog.dogName = "Papa";
            trace("Dog=", dog.dogName);
            trace("copyDog=", copyDog.dogName);
        }
       
        private function clone(obj:Object):* {
            var copier:ByteArray = new ByteArray();
            copier.writeObject(obj);
            copier.position = 0;
            return copier.readObject();
        }
    }
}

class Animal {
    private var _dogName:String;
    public function set dogName(dogName:String):void {
        this._dogName = dogName;
    }
    public function get dogName():String {
        return this._dogName;
    }

}
------------------------------------------------------

输出:

personA= Janet 25 Female
personB= Flex 23 Male
arr= 3,2,1
arrCopy= 1,2,3
Dog= Papa
copyDog= Bobby

2
0
分享到:
评论

相关推荐

    2013 Adobe ActionScript 3.0 开发人员指南

    此外,ActionScript 3.0还支持多维数组和数组的克隆、扩展以及相关操作。 处理字符串是编程中的基础,ActionScript 3.0提供了丰富的字符串操作方法,包括创建字符串、获取长度、处理字符、比较字符串、获取对象的...

    Actionscript3.0开发人员指南

    ### Actionscript3.0开发人员指南 #### 使用日期和时间 **管理日历日期和时间** ActionScript 3.0 提供了强大的日期和时间管理功能。通过 `Date` 类可以轻松地创建、操作和格式化日期。例如,可以通过构造函数...

    影片剪辑ActionScript3.0

    ActionScript3.0是一种面向对象的编程语言,它极大地增强了Flash的功能,特别是在控制影片剪辑方面。在这个教程中,我们将深入理解如何利用ActionScript3.0来控制和操作影片剪辑。 首先,影片剪辑在Flash中是动画的...

    actionscript3.0cookbook中文版pdf

    《ActionScript 3.0 Cookbook》是一本针对Adobe Flash平台上的ActionScript 3.0编程的详尽指南,旨在帮助开发者解决日常开发中遇到的各种问题。本书覆盖了从基础概念到高级技巧的广泛主题,包括但不限于创建和管理...

    Foundation ActionScript 3.0 with Flash CS3 and Flex

    在本书中,读者将深入学习ActionScript 3.0的基础语法,包括变量声明、数据类型、控制结构(如条件语句和循环)、函数定义和调用,以及面向对象编程概念,如类、对象实例化和继承。此外,书中还涵盖了事件处理、错误...

    ActionScript 3.0 开发人员指南 (AS3开发帮助文档)

    ### ActionScript 3.0 开发人员指南精要解析 #### 第 1 章: 使用日期和时间 **管理日历日期和时间** ActionScript 3.0 提供了强大的日期和时间处理功能,主要通过`Date`类实现。这个类支持多种日期和时间格式的...

    ActionScript3.0开发指南

    - **定义**:ActionScript 3.0(AS3)是一种面向对象的编程语言,专为Adobe Flash Player 和 Adobe AIR 设计。它被广泛用于创建交互式多媒体内容、桌面应用和移动应用。 - **发展历程**:AS3是ActionScript的第三个...

    ActionScript 3.0 开发人员指南中文官网上下的

    ### ActionScript 3.0 开发人员指南知识点总结 #### 一、使用日期和时间 - **管理日历日期和时间**:ActionScript 3.0 提供了强大的日期和时间处理功能,通过 `Date` 类可以轻松地管理日期和时间。例如,可以使用 ...

    PROGRAMMING ACTIONSCRIPT 3.0

    ### 编程ActionScript 3.0 #### 关于本手册 本手册旨在为开发者提供一个全面深入地学习ActionScript 3.0的资源。它不仅涵盖了基础概念,还涉及了高级主题,使读者能够充分利用这门语言进行高效编程。 #### 使用本...

    源文件_ActionScript.3.0.游戏编程大学.rar

    ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是Flash平台上的游戏和交互式内容。本资源“源文件_ActionScript.3.0.游戏编程大学.rar”提供了深入学习...

    ActionScript3.0开发人员指南

    ### ActionScript3.0开发人员指南关键知识点综述 #### 第1章 使用日期和时间 在ActionScript3.0中,处理日期和时间是至关重要的技能。本章深入介绍了如何管理日历日期和时间,包括如何控制时间间隔,以及一个实际...

    ActionScript_3.0开发技术大全

    ### ActionScript 3.0开发技术大全 #### 一、ActionScript 3.0简介 ActionScript 3.0(简称AS3)是Adobe Flash Player 和 Adobe AIR 中使用的强大脚本语言,它允许开发者创建高性能的动画、应用程序和其他交互式...

    ActionScript.3.0动画教程[中英文版+源码]

    至于对象的运动,ActionScript 3.0引入了强类型系统和面向对象的编程概念,使得开发者可以精确地控制物体的移动路径、旋转、缩放等行为。 教程中可能涉及的关键知识点包括: 1. **基本语法与数据类型**:了解AS3.0...

    actionScript3开发人员最全指南

    在几何结构的处理上,ActionScript 3.0提供了对基本几何形状的操作能力,比如使用Point对象表示坐标点、使用Rectangle对象表示矩形区域、使用Matrix对象进行图形变换等。 绘图API允许开发人员直接在显示对象上绘制...

    flash actionsript 3.0源代码

    在ActionScript 3.0中,绘图主要依赖于DisplayObject类的Graphics对象。Graphics对象提供了一系列方法,如beginFill()、lineTo()、drawRect()等,用于在舞台上绘制图形。例如,beginFill()用于设置填充颜色,lineTo...

Global site tag (gtag.js) - Google Analytics