`
sooxin
  • 浏览: 255804 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于MC的复制

阅读更多

关于MC的复制一直都是人们抱怨Adobe的地方,他们不知道为什么一直不肯提供这样一个显然有必要的"Clone()"方法。按照官方手册上的解释,他们说只要用户用该MC相应的类重新new一个对象就可以了,但是那只能生成一个新的原始对象,并不能包含该MC中已经动态添加的各个Child,和用户期望的复制一个相同的MC不是一个概念。

面对用户诸多抱怨,Abobe一直回避这个问题,也不做任何解释。我也遇到过这个问题,而且看了很多国内外用户的讨论,最终我想明白了,Adobe不回应这个问题,是因为这个问题其实涉及到了Flash AS系统中的一个弱点(不能说是缺点),那就是:一个显示对象只能唯一作为某一个容器的Child,不能同时在多个容器里做Child。如果你把一个显示对象加入到其他的容器中,它就会自动从原容器中移除。回到我们说的MC复制问题上,如果用户克隆生成一个新的MC,并且把原MC里的孩子们也都加到新的MC里,那么那些孩子们就会从原来的MC里消失。为解决这个问题,就需要在加那些孩子们的时候也采用克隆的方式,这就形成了一个类似递归的模式,而显然Adobe不想在这里费心,所以他们就干脆不允许用户克隆MC,一了百了。

如果Adobe想偷懒,用户们是没脾气的,只能自己手动来实现这样一个功能了,思路如下——
Clone(MC):先用该MC的类生成一个新的原始对象,复制所有相关的参数设置,然后遍历原MC中的Children(只是孩子,不管孙子),对每个Child调用Clone(child)生成一个克隆加入到新的MC对象中。注意这里的Clone(MC)会形成嵌套递归调用。

其实对于Adobe设定的“把显示对象加入到其他容器就会自动从原容器中移除”的规则,我觉得是一个不良规则,因为没有任何理由一定要从原容器中移除,很可能只是为了偷懒。其实应该让用户可以选择是否保留在原容器中的对象,即为:当把显示对象加入到其他容器中时,如果设定保留标志参数为true,就会自动在原容器中保留一个原对象的克隆,并返回该克隆对象的引用供用户进行后续操作。如果用户认为不需要在原容器中保留,可以设该参数为false,或者在将来对返回的克隆引用设置 =null 就可以删除。

不管Adobe到底是出于什么目的,也不管他们以后会不会给你提供这样一个克隆函数,作为用户只能适应环境谋生存:如果你现在需要这个功能的话,自己写一个克隆的类来实现吧,方法就是我上面所说的那样。

分享到:
评论

相关推荐

    as3场景中MC复制一个或多个

    说明:这个是用来实现已在场景中的Mc复制多个出来,如AS2中可以duplicateMovieClip,AS3中用是用New和addChild的, 有人会说As3可以用  方法1——反射方法: var ClassRef:Class = getDefinitionByName...

    MC37i模块数据手册

    ### MC37i模块概述 - **产品名称**:MC37i,这是一个GSM/GPRS模块。 - **文档版本**:01.200 - **文档ID**:MC37i_HD_v01.200 - **文档类型**:硬件接口描述(Hardware Interface Description) ### 通用注意事项 ...

    MC20 BLE指导手册

    MC20 BLE指导手册是由移远公司发布的关于MC20E BLE模块的AT命令手册,该模块支持GSM/GPRS/GNSS功能。MC20E BLE模块的AT命令手册详细介绍了如何通过AT指令对模块进行操作和控制,以便用户能够高效、正确地使用该模块...

    ASAM_MCD-2MC.pdf

    最后,文档明确提及了允许打印、复制和分发文档本身或其中部分内容。这表明ASAM MCD-2MC版本1.6在版权保护的前提下,鼓励广泛传播和学习,这有助于行业内的工程师和技术人员了解和掌握A2L文件规范,推动整个汽车电子...

    minio mc 工具用于minio上传复制等

    minio mc 工具用于minio上传复制等

    MC1000手册.pdf

    版权所有,未经许可不得复制或使用。 #### 重要声明 - **软件许可**: Symbol Technologies, Inc.提供了一个不可转让且非排他的软件使用许可,禁止用户未经授权的修改、合并或网络使用行为。 - **版权声明**: 用户需...

    MC算法C++实现 源代码

    移动立方体(Moving Cube,简称MC)算法是一种在三维图形渲染中用于绘制等值面的常用方法。在C++环境中,结合OpenGL库可以高效地实现这一算法。OpenGL是一个跨语言、跨平台的图形库,为程序员提供了底层的、固定功能...

    开源项目-minio-mc.zip

    3. **易用的命令行界面**:MC提供了一套直观且强大的命令行接口,用户可以通过简单的命令完成上传、下载、列出、删除、复制、移动等操作,提高工作效率。 4. **数据安全**:MC支持SSL/TLS加密传输,保证数据在传输...

    三菱MC卡资料图

    三菱MC卡是一种专门用于电梯程序管理和调试的工具,适用于三菱电梯的各种机型,包括GP3无机房系列(如728、718等)的主板程序复制、烧录以及管理。作为电梯资料调试的必备工具,三菱MC卡不仅支持单机操作,还能够...

    mc8051在spartan6上面的移植

    将下载的VHDL源代码文件复制到工程目录下,并在工程中添加这些文件。这包括mc8051的相关模块,但不包括Cfg后缀的文件。 在移植过程中,MC8051的默认配置包括ROM、RAM和RAMX。然而,为了符合常见的51结构,只需保留...

    mc9190 win ce中文版

    下载完成的压缩包解压后,用户需要将解压得到的文件夹复制到MC9190设备的根目录下的"temp"文件夹内。这个步骤是为了将新系统文件准备就绪,以便设备识别并执行更新。"9100c60Bcp_TEMP"是刷机程序的文件名,运行此...

    烽火HG680MC-MY通刷包 芯片MSO9385

    烽火HG680-MC-MY盒子 免拆卡刷包,需要680MY 无线完美包的移步https://www.syjshare.com/res/0T804X4A 以下是刷机步骤 1.准备一个8G或以下容量的优盘将其格式化为fat32格式;(切记不要用做过电脑系统的优盘,不然...

    Linux-mc控制台文件管理器可移植版

    1. **双面板设计**:Linux-mc将文件系统分为左右两个独立的浏览面板,用户可以同时查看不同的目录,并方便地进行文件的复制、移动、删除等操作。 2. **文本界面**:虽然Linux-mc运行在命令行环境中,但它提供了丰富...

    住友说明书_MC550_Soft_(MH-694A).pdf

    根据提供的文件信息,我们可以得出这是关于住友MC-550(SystemMX)系统软件操作手册的相关内容。下面将从安全预防措施、修订历史、前言等几个方面进行详细阐述。 ### 安全预防措施 在操作MC-550(SystemMX)系统之前,...

    mc3000英文说明手册

    出版,并且受版权保护,任何未经授权的复制、使用形式均受到法律限制。 ### 一、MC3000设备概述 MC3000是一款由Symbol Technologies, Inc.生产的设备,主要应用于数据采集和移动计算领域。该设备提供了强大的硬件...

    MC_像素画程序

    这种转化过程保留了原图的基本色彩和形状,使玩家能够在游戏内精确地复制出图像。 在使用该程序时,用户需要注意图片的尺寸和像素化程度。较大的图像可能需要更多的方块来表现,而更高的像素化程度则能增加细节,但...

Global site tag (gtag.js) - Google Analytics