SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について

ActionScript初心者なので頓珍漢な事を書いているかもしれませんが、
よろしくお願いします。
オブジェクト名.data.変数の変数の部分に変数を入れたく、
AS2.0で
////////////////////////////////////////////////
my_hozon = SharedObject.getLocal("test", "/");

count = 0;

for (count=0; count<=3; count++) {
abc = "test_"+count;
trace(abc);
my_hozon.data.abc= "a";
trace(my_hozon.data.abc);//結果"a"
trace(my_hozon.data.test_0);//結果"undefined"
trace(my_hozon.data.test_1);//結果"undefined"
trace(my_hozon.data.test_2);//結果"undefined"
trace(my_hozon.data.test_3);//結果"undefined"
}
////////////////////////////////////////////////
と書いてみたのですが、
trace(my_hozon.data.abc);
は結果が返ってきたのですが、
trace(my_hozon.data.test_0);
trace(my_hozon.data.test_1);
trace(my_hozon.data.test_2);
trace(my_hozon.data.test_3);
だとundefinedになり失敗しました。
どうすれば変数に変数が入るのか教えていただけないでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

SharedObject以前に何がしたいのかがわかりませんよ...。



SharedObject も for文 も抜きにして
簡単なもので実験などしてみるのが良いと思います。

例えば _root に 「test_1」 という変数のみ を書いたとします。
そしてその「test_1」を trace したとします↓。

---------------------------
test_1;
trace(test_1);
// →結果 undefined
---------------------------

↑「test_1」の 値 など定義していないので,
test_1 は当然 undefined になります。
スクリプトを私とFlashとの日本語会話にします↓。

 私:「test_1 があります。」
 私:「さて test_1 は何ですか?」
   //→Flash:「は? 何ですかって知りません。未定義です。」

というやりとりになります。


test_1 を undefined にしたくなければ,
というか,
変数だけ置いても意味が無いので,変数を意味のあるものにしたければ
次のように値を入れるべきでしょう。

---------------------------
test_1 = "あいうえお";
trace(test_1);
// →結果 あいうえお
---------------------------

スクリプトを日本語会話にします↓。

 私:「test_1 は "あいうえお" です。」
 私:「さて test_1 は何ですか?」
   //→Flash:「"あいうえお" です!」

というやりとりになります。

少なくともこの辺の理解が必要だと思います。



というわけで,
いったい何がしたいのでしょうか?

SharedObject や for文 の前に何がしたいのかをハッキリさせないと,
Flashは言うことを聞きません。
雰囲気や感じから何をしたいのかを理解できる人間ですらわからないのですから
Flash にわかるはずがありません。


一応,
こうすれば↓少なくとも undefined ではないものが出力されますが。

---------------------------------------
my_hozon = SharedObject.getLocal("test", "/");

for (count=0; count<=3; count++) {
my_hozon.data["test_"+count] = count;
}

trace(my_hozon.data.test_0);//結果 0
trace(my_hozon.data.test_1);//結果 1
trace(my_hozon.data.test_2);//結果 2
trace(my_hozon.data.test_3);//結果 3
---------------------------------------


回りくどいですが,
わざわざ 変数 abc を介す場合は,
次のようにしても,少なくとも undefined ではないものが出力されます。

---------------------------------------
my_hozon = SharedObject.getLocal("test", "/");

for (count=0; count<=3; count++) {
abc = "test_"+count;
my_hozon.data[abc] = count;
}

trace(my_hozon.data.test_0);//結果 0
trace(my_hozon.data.test_1);//結果 1
trace(my_hozon.data.test_2);//結果 2
trace(my_hozon.data.test_3);//結果 3
---------------------------------------

しかし,これは私が勝手に作ったスクリプト例です。
実際には何がしたいのかわからないので
書けることはこのぐらいです。



それと,SharedObject ではなく,
書かれていらっしゃる for文 の使い方がそもそも変ですよ。
「for文」 をネット検索やヘルプ検索で調べて理解して使えるようになることが先のような気がします。

また,
その 「for文」 と合わせて良く使用されるのが上のスクリプトにもある,
「[ ]」=「配列アクセス演算子」 です。
「配列アクセス演算子」 についてもGoogle検索やヘルプ検索などしてみて
理解して使えるようにするのが良いと思います。


結論:問題点は SharedObject の使い方にあるのでは "ない" と思います。
 
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございます。
for文は本で調べたり周りに聞いたりして一応理解していたつもりだったのですが…
もう一度調べ直してみます!

配列アクセス演算子は知らなかったので調べてみます!
ありがとうございました。

お礼日時:2009/06/02 16:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング