2013-01-11 55 views
3

我在我的應用程序中使用剪切粘貼粘貼,如cacoo。但我在這些操作中遇到問題。 我使用背後剪切複製粘貼的想法在操作腳本中使用DisplayObject(Group,UIComponent)剪貼複製粘貼3 flex 4

var className:String = getQualifiedClassName(objcut.getItemAt(i)) 
var klass:Class = getDefinitionByName(className) as Class 
var cloneObject:* = new klass() 

,所以我不能夠保留對象的全部財產。 還有其他想法可以在Flex 4中執行這些操作。我可以如何複製Flex 4(as3)中的圖形對象。複製一個對象並粘貼多次。

回答

0

,以與性能對象的副本,最簡單的方法是使用的ByteArray:

public static function copy(value:Object):Object 
{ 
    if (!value) 
     return null; 

    //register object class to prevent Error #1034: Type Coercion failed 
    registerClassAlias(getQualifiedClassName(value), value.constructor); 

    var buffer:ByteArray = new ByteArray(); 
    buffer.writeObject(value); 
    buffer.position = 0; 
    var result:Object = buffer.readObject(); 
    return result; 
} 

但你仍然可以得到錯誤#1034嵌套類。在複製之前,您需要爲所有嵌套類別註冊別名以防止出現這種情況,例如在某些啓動方法中。

+0

謝謝,但這不適用於自定義組件組件...我如何註冊自定義組件? – Devendra

+0

你可以通過調用registerClassAlias(getQualifiedClassName(value),value.constructor)來註冊任何類;其中值是您的自定義組件,儘管此實用程序複製方法通常用於複製簡單對象(如TextFormat),但複製可視對象的副本有時甚至可能會引發異常。 – fsbmain

+0

我擁有所有的可視化組件,我正在開發一個像www.cacoo.com這樣的工具。但削減顯示對象箱問題的複製粘貼, – Devendra

相關問題