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( ) でくるんでしまっていたという凡ミス。くるみすぎ!

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
AS3習得本
AS3の全容を学習できる本。この中でどれか1冊自分に合ったものを。
Adobe Flash CS4 詳細!ActionScript3.0入門ノート ActionScript3.0 プロフェッショナルガイド 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 詳説 ActionScript 3.0 Actionscript 3.0 Cookbook
AS3発展本
ASでアニメーションさせる面白さを知るための本。
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ActionScript 3.0 アニメーション AdvancED ActionScript 3.0 Animation (Advanced)
AS2
"Flash"ではなく"ActionScript2.0"学習のための良著。他にもいろいろ読んだけど、この4冊を読んだ後、自分が成長できた感じがしました。
FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] Essential Actionscript 2.0 Flash 8 Essentials Foundation Actionscript Animation: Making Things Move (Foundation)

あわせて読みたいブログパーツ

相互リンク

hi-posiさん
携帯Flashといえばhi-posiの岡田昇三さん。FlashLiteの有益な記事もたくさん書かれていていつもお世話になってます。ついにご挨拶させていただきました。面白すぎる人でしたw。

Return to page top