SharedObject.data 中の配列は配列なのか?(解決済)

追記にて解決済

スコア履歴のようなものをAS2のSharedObjectで作る際、SharedObjectに配列を格納して、追加スコアを concat してできた配列の要素数(length)が2になる。

concat側が原因かとも思ったけども、SharedObject.getLocal 直後の data.hogeArray の length を trace すると、既に 2 になっているで、こっちが原因?

例えば過去9回スコア記録しておいて10回目のスコア(3点)を書き込む際:
「8,7,6,3,4,7,5,7,5」と「3」という2要素として扱われているっぽい。

とりあえず対応策として、

var str:String = String(my_so.data.hogeArray);
var newArray:Array = str.split(",")

という感じで、一旦すべてを文字列化、改めてカンマ区切りで新規配列に格納して対応しておいた。

追記:
makoche様に頂いたコメントのおかげで解決しました!!
参考までに、僕が作っていた、ローカルにスコア履歴を追加していくサンプル(固有PCにおいてのスコア記録をしたかったんです):

var score:Number = Math.floor(Math.random()*99)+1; //スコアを適当に
var loadedScore:Array = new Array(); //soロード用

var so:SharedObject = SharedObject.getLocal("myScore2");
if(so.data.score == undefined){ //初回
so.data.score = new Array();
}else{ //2回目以降
loadedScore = so.data.score; //こちらが正解。
//loadedScore = new Array(so.data.score); //←ここでミスってました!!!
}
var newScore:Array = loadedScore.concat(score);
so.data.score = newScore;
so.flush();

配列になれよと文句を言いつつ、自分で new Array( ) でくるんでしまっていたという凡ミス。くるみすぎ!

このエントリーをはてなブックマークに追加
はてなブックマーク - SharedObject.data 中の配列は配列なのか?(解決済)

Comments:3

makoche 07-06-20 (水) 17:49

いや、そんなはずは無いと思うよ。。。
こういうことじゃない?
外してたらごめんね。

var so:SharedObject = SharedObject.getLocal(“myScore”);
so.data.score = [10,20,30];

trace(so.data.score.length)//3

var addScore:Array = [40,50];
var newScore:Array = so.data.score.concat(addScore);
so.data.score = newScore;

trace(so.data.score.length)//5

ido 07-06-20 (水) 18:39

SharedObject.data内の変数を直接参照して使うとおかしかった気がする。
一度別の配列に代入してみて。

var array:Array= my_so.data.hogeArray;
trace(array.length);

tera 07-06-20 (水) 19:14

こちらのソースも載せずにすいませんでした。
お二人にご回答いただき、人の優しさに触れることができましたw

>makoche様
ご丁寧に教えていただきましてありがとうございます!
頂いたソースをもとに、少しずつ手を入れていって、望んでいた挙動に辿り着けました。
>Ido様
お忙しい所コメント頂きありがとうございます。
上記の通り、原因は僕のケアレスミスでした。すいません。
一応、直接参照の検証もさせていただきました。僕のサンプルでは特に問題なく動くようです。

お手数をおかけしました。今後ともよろしくです。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.trick7.com/blog/2007/06/20-141626.php/trackback
Listed below are links to weblogs that reference
SharedObject.data 中の配列は配列なのか?(解決済) from trick7

Return to page top