電子書籍の厳選無料作品が豊富!

Flash8を使用し、ActionScript2で書いています。

変数名に、他の変数の値を参照したいと考えています。
http://www.flash-jp.com/modules/newbb/viewtopic. …
を見て、同じようにやってみました。

すると、
animal = "cat";
catlLegs = 4;
とした場合、animalの値であるcatを参照し
animalLegs = 4;
とする、というような単純なものはうまくいきました。

しかし、SharedObjectのdataプロパティで、属性名を変数にしようとすると
うまくいきません。

dataNameという変数に、soというSharedObjectのneko属性の値を代入する場合、
so:SharedObject = SharedObject.getLocal("hoge");
animal = "neko";
dataName = _root["so.data."+animal];
としたのですが、
trace(dataName);
の値はundefinedになってしまいます。
なお、
trace(_root.so.data.neko);
では正しく値が表示されます。

属性名前には他の変数の値を参照できないのでしょうか。
それともSharedObjectではできないのでしょうか。
なんとか実現する方法をおしえていただければと思います。
よろしくお願いいたします。

A 回答 (1件)

ちゃんと検証してみたわけではありませんが,


これが変でしょう↓。

dataName = _root["so.data."+animal];

[ ] 配列アクセス演算子は "1つの階層" を表すものになります。
複数の階層をまとめて扱うことはできません。
1つの階層 というよりも . ドット演算子 の中身 という方が正確ですが。
そこが eval関数 との大きな違いです。

dataName = _root.so.data[animal];

でうまく行くのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまくいきました。

配列アクセス演算子をしっかり理解していませんでした。
1つのドット演算子の中身のみ扱えること、しっかり覚えておきます。
これを踏まえてeval関数ももう一度見直してみます。

どうもありがとうございました。

お礼日時:2008/03/01 13:02

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