Flex深拷贝
发布时间:2020-12-15 04:49:48 所属栏目:百科 来源:网络整理
导读:通常我们需要深拷贝flex对象的时候 我们会google到这样的信息 public function DeepClone( target : Object ) : *{var myBA:ByteArray = new ByteArray(); myBA.writeObject( target ); myBA.position = 0; return( myBA.readObject() ); } 这个用来拷贝Arra
通常我们需要深拷贝flex对象的时候 我们会google到这样的信息 public function DeepClone( target : Object ) : * { var myBA:ByteArray = new ByteArray(); myBA.writeObject( target ); myBA.position = 0; return( myBA.readObject() ); } 这个用来拷贝Array或者其他一些数据类的时候 我们发现他是OK的 但是如果要深拷贝DisplayObject的时候这个函数就会发生运行时错误 在网上发现这么一篇文章
直接跳到Answer5吧 看看怎么复制DisplayObject public function duplicateDisplayObject( source:DisplayObject,autoAdd:Boolean = false ):DisplayObject { // create duplicate var sourceClass:Class = Object(source).constructor; var duplicate:DisplayObject = new sourceClass(); // duplicate properties duplicate.transform = source.transform; duplicate.filters = source.filters; duplicate.cacheAsBitmap = source.cacheAsBitmap; duplicate.opaqueBackground = source.opaqueBackground; if (source.scale9Grid) { var rect:Rectangle = source.scale9Grid; // WAS Flash 9 bug where returned scale9Grid is 20x larger than assigned // rect.x /= 20,rect.y /= 20,rect.width /= 20,rect.height /= 20; duplicate.scale9Grid = rect; } // add to source parent's display list // if autoAdd was provided as true if (autoAdd && source.parent) { source.parent.addChild(duplicate); } return duplicate; } 好了..搞定 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |