2010年03月19日

ActionScript3でcloneメソッドを実装する

JavaのObjectクラスにはcloneメソッドという
別の参照に同じオブジェクトを複製するメソッドがあるけど、
ActionScriptにはないので作ってみた。
以下のメソッドを複製したいクラスに追加する。

public function clone():* {
var className:String = getQualifiedClassName(this);
var clazz:Class = getDefinitionByName(className) as Class;

var o:Object = ObjectUtil.getClassInfo( this );
var ins:* = new ClassFactory( clazz ).newInstance();

for each ( var q:QName in o.properties ) {
ins[ q.localName ] = this[ q.localName ];
}

return ins;
}


 
Adobe Flex 3 Tips集
トップページ>>
 

この記事へのトラックバックURL

http://blogs.dion.ne.jp/tracks/tb.cgi/9278635
※ブログオーナーが承認したトラックバックのみ表示されます。
※半角英数字のみのトラックバックは受信されません。
この記事へのコメント
Adobeのhelpにクローンについての記述ありましたよ。

http://help.adobe.com/ja_JP/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html

こっちのほうが断然いい。



import flash.utils.ByteArray;

function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}
Posted by ... at 2010年12月19日 13:15
そうですね。今度からこっち使います。
ありがとうございます。
Posted by Mr.T at 2010年12月19日 21:34
 
※ブログオーナーが承認したコメントのみ表示されます。
※半角英数字のみのコメントは投稿できません。