- 2007-06-20 (水)
- action script
追記にて解決済
スコア履歴のようなものを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( ) でくるんでしまっていたという凡ミス。くるみすぎ!
- Newer: チュートリアルビデオ:Fuse Kit を使う(1)
- Older: Camtasia Studio 4 にて FLV が作成できない問題
Comment:3
- makoche 2007-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 2007-06-20 (水) 18:39
-
SharedObject.data内の変数を直接参照して使うとおかしかった気がする。
一度別の配列に代入してみて。var array:Array= my_so.data.hogeArray;
trace(array.length); - tera 2007-06-20 (水) 19:14
-
こちらのソースも載せずにすいませんでした。
お二人にご回答いただき、人の優しさに触れることができましたw>makoche様
ご丁寧に教えていただきましてありがとうございます!
頂いたソースをもとに、少しずつ手を入れていって、望んでいた挙動に辿り着けました。
>Ido様
お忙しい所コメント頂きありがとうございます。
上記の通り、原因は僕のケアレスミスでした。すいません。
一応、直接参照の検証もさせていただきました。僕のサンプルでは特に問題なく動くようです。お手数をおかけしました。今後ともよろしくです。
Trackback:0
- TrackBack URL for this entry
- http://www.trick7.com/blog/mt-tb.cgi/563
- Listed below are links to weblogs that reference
- SharedObject.data 中の配列は配列なのか?(解決済) from trick7.com blog




