トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     多次配列のdeep copyについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
__kjx
Åê¹ÆNo.39430
投稿日時: 2008-7-4 20:07
新米
居住地:
投稿: 4
使用環境:
WinXP SP2,Flash8 Pro,Flex2
多次配列のdeep copyについて
Flex2にてactionscript3を勉強中なのですが、
配列のdeep copyで困っています。

1.Array.concatを使用して配列をコピーすると、参照が切れない
2.ByteArrayを使用して配列をコピーすると、カスタムクラスのデータ型がObjectになってしまう

データ型を維持しつつ完璧にコピーする良い方法ご存知ないでしょうか。
再帰処理等で一つずつコピーすればできるのでしょうが、
データ量が増えると現実的ではないので。。。


hoge.as
package{

	import flash.display.Sprite;
	import flash.utils.ByteArray;

	public class hoge extends Sprite{

		public var arr:Array;

		public function hoge(){
			arr = [];
			arr.push({a:0, b:new dataType(1,2,3)});
			arr.push({a:1, b:new dataType(4,5,6)});

			//concat
			var copy1:Array = arr.concat();

			//clone
			var copy2:Array = clone(arr);

			//
			arr[0].b.data1 = 7;

			trace(arr[0].b.data1);	//7
			trace(copy1[0].b.data1);	//7
			trace(copy2[0].b.data1);	//1
			trace(copy3[0].b);		//[object Object]
		}

		//http://livedocs.adobe.com/flex/3_jp/html/help.html?content=10_Lists_of_data_6.html
		public function clone(source:Object):* {
			var myBA:ByteArray = new ByteArray();
			myBA.writeObject(source);
			myBA.position = 0;
			return(myBA.readObject());
		}
	}
}

dataType.as
package{

	public class dataType{

		public var data1:Number;
		public var data2:Number;
		public var data3:Number;

		public function dataType(_data1:Number, _data2:Number, _data3:Number){
			data1 = _data1;
			data2 = _data2;
			data3 = _data3;
		}
	}
}
__kjx
Åê¹ÆNo.39431
投稿日時: 2008-7-4 23:21
新米
居住地:
投稿: 4
使用環境:
WinXP SP2,Flash8 Pro,Flex2
Re: 多次配列のdeep copyについて
すいません、自己解決しました。
flash.net.registerClassAliasで
クラスのエイリアスを登録しておく必要があったんですね。
お騒がせしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops