`
iamzealotwang
  • 浏览: 121356 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

As3 深度克隆某个对象,支持Vector和Array(不丢失类别)

    博客分类:
  • As3
阅读更多

clone 某个对象,支持Vector类型和Array类型

 

需要引用类库as3-commons-reflect

 

http://www.as3commons.org/as3-commons-reflect/

 


/**
* 深度clone某个对象,包含Vector 和 Array
*/        
public static function clone (_obj : * ): *
{
    var returnCloneObj :*;
    var objType : Type = Type . forInstance (_obj );
   
    if (_obj is Vector .<*> || _obj is Array )
    {
        returnCloneObj = new objType . clazz ();
        for each (var eachCloneObj :* in _obj )
        {
            returnCloneObj . push (cloneObj (eachCloneObj ));
        }
    }
    else
    {
        returnCloneObj = cloneObj (_obj );
    }
    return returnCloneObj ;
}

/**
* clone 只能clone简单对象的所有的public属性
*/
private static function cloneObj (_obj : * ): *
{
    var objType : Type = Type . forInstance (_obj );
    var cloneObj :* = new objType . clazz ();
    for each (var field : Field in objType . properties )
    {
        if (field is Variable || field is Accessor && Accessor (field ). writeable && field . name != 'prototype' )
        {
            cloneObj [ field . name ] = _obj [ field . name ];
        }
    }
    return cloneObj ;
}

 

 

分享到:
评论

相关推荐

    asvector工具类

    asvector工具类

    as3基础模块

    AS3提供了Array、Vector和Object等数据结构。Array是动态大小的列表,而Vector提供类型安全和性能优化的数组。Object是所有其他对象的基类,可以用来存储键值对,类似于JavaScript的对象。 六、网络通信 AS3提供了...

    Vector3-data Json-ParsingPlayerPrefs

    然而,Unity的`PlayerPrefs`系统只支持基本的数据类型,如字符串、整数和浮点数,因此不能直接用来存储`Vector3`。 为了解决这个问题,我们可以利用JSON(JavaScript Object Notation)这一轻量级的数据交换格式。...

    深度探索c++对象模型(2012版本)

    C++对象模型是C++编程的基础,它描述了如何在内存中表示类和对象,以及它们之间的关系。首先,我们需要了解C++中的构造函数和析构函数,这两个函数在对象生命周期的开始和结束时被调用,用于初始化和清理对象的状态...

    as3数据结构-中文注释.rar

    AS3的对象支持原型继承和动态属性,提供了强大的数据封装和扩展能力。 3. **链表**:虽然AS3标准库中没有直接提供链表实现,但开发者可以通过构造自己的类来实现。链表数据结构在处理大量元素时,插入和删除操作比...

    STL容器之array和vector.zip

    在这个“STL容器之array和vector.zip”压缩包中,我们主要探讨两个重要的容器:`std::array`和`std::vector`。它们都是用于存储元素序列的容器,但有着不同的特性和使用场景。 `std::array`是C++11引入的一个固定...

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...

    抽奖机 滚动抽奖机 flash as3

    在AS3中,可以使用Array或Vector对象来存储奖品信息,包括奖品名称、图片路径等。 4. **动画**:在Flash环境中,AS3结合Timeline可以创建复杂的动画效果。例如,通过改变对象的位置、旋转角度、透明度等属性,模拟...

    深度探索C++对象模型 PDF中文清晰版

    《深度探索C++对象模型》是一本面向有C语言基础的读者,旨在深入解析C++这一强大编程语言中关于对象模型的专著。C++作为面向对象编程的典范,其对象模型是理解语言特性和底层机制的关键。这本书的中文清晰版提供了一...

    23种设计模式实例及说明大全(as3语言描述)

    AS3中的Array和Vector类都提供了迭代器接口。 18. 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。AS...

    as3学习文档

    在 AS3 中,数组有两种形式:`Array` 和 `Vector`。 **示例代码:** ```as3 var arr:Array = [1, "two", 3.0]; trace(arr[1]); // 输出: two ``` #### 七、日期类型(Date) 日期类型用于处理日期和时间。它可以...

    vector定义和初始化

    `vector`在内存中连续存储元素,这使得随机访问变得高效,同时也支持动态增长和收缩以适应数据的变化。 ### `vector`的定义 `vector`的定义通常包含元素类型和初始容量两部分。例如,如果我们要定义一个存储整数的`...

    Vector3——简单的3D向量类

    vector3 类,实现的功能 1、重载赋值运算符“=” 2、重载“==”和“!=”操作符 3、置为零向量 4、重载一元运算符“-” 5、重载二元预算法“+”“-” 6、标量的乘除法 7、重载自反运算符 8、向量单位化 9、向量的...

    vectormap 支持map的顺序查找

    在C++编程中,"vectormap"的概念似乎是一种结合了`std::vector`和`std::map`特性的自定义容器。`std::vector`是一个动态数组,它提供了随机访问和高效的操作,如插入和删除元素。而`std::map`则是一个关联容器,它...

    深度探索C++对象模型

    9. **STL(标准模板库)**:STL是C++的一个重要组成部分,包含容器(如vector、list)、迭代器、算法和函数对象等,是高效编程的重要工具。 10. **内存管理**:C++提供了原始的指针操作,但也引入了智能指针(如...

    flash as3 弹球小游戏

    AS3是其最新的版本,提供了更强大的性能和面向对象的编程模型。 首先,我们要了解AS3的基础知识。AS3是基于ECMAScript 4的一个子集,引入了类和包的概念,增强了类型检查和错误处理。它的语法结构与Java和C#类似,...

    对一组vector对象,计算相邻元素的和

    题目要求读取一组整数到`vector`对象中,并计算并输出相邻元素的和。若元素个数为奇数,则直接输出该元素的值。下面详细介绍如何实现这一功能: 1. **读取数据**: 使用`while (cin &gt;&gt; v)`循环读取整数并使用`push...

    Array And Phased Array Antenna Basics

    10 Special Array Antenna Configurations 269 10.1 Conformal Array and Phased Array Antennas 269 10.1.1 Circular Sector Array and Phased Array Antenna 270 10.2 Volume Array and Phased Array Antennas 276...

    vector list map pair stl 标准模板库 c++

    在C++编程中,STL(Standard Template Library,标准模板库)是一个不可或缺的部分,它提供了高效、可重用和模块化的代码实现。STL的核心组件包括容器、迭代器、算法和函数对象。在这个主题中,我们将深入探讨四个...

    深度探索C++对象模型(中英文版)

    《深度探索C++对象模型》是一本面向C++高级开发者的经典著作,旨在揭示C++对象模型的内在机制和原理。这本书深入剖析了C++语言的底层细节,帮助读者理解对象在内存中的表示方式,以及如何通过指针、引用、继承、多态...

Global site tag (gtag.js) - Google Analytics