• ベストアンサー

Flashでの変数利用パス

こんにちは。 Flashのactionscriptの事で一つどうしても 分からずお聞きしたいのですが、 変数をパスに利用することはできないのでしょうか? たとえば testというオブジェクトを作成しておいて  a = "test"  _root.a._x = 50; のような感じで変数をパスに利用したいのですが これだと_rootの「a」というオブジェクトを探す事に なってしまいうまくいきません。 これは対処法はないのでしょうか? それと_root.a._x = 50と    _root[a]._x = 50の違いが いまだ分からず困っています。 教えて頂けたら非常に助かります。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shevy
  • ベストアンサー率44% (69/156)
回答No.2

こんばんは。 > _root.a._x = 50; これだと、一番上位層の中のMCのaのプロパティ_xを指してしまいますね。 testというストリングをaに格納しておけばいいわけです。 そこで、 eval();関数を用います。 以下のような感じで・・。 on(press){ a="test"; eval("_root." + a)._x += 100; } 上記はボタンのスクリプトです。 オブジェクト指定のパスをevalの中身にいれてしまうわけです。 またそのままのストリングなのは、_rootなので””で囲みます。 aは変数のtestがストリングが格納されているので、""は不要です。これはわかりますよね? 上記ボタンを押せば、_root上のtestというmcは動いてくれます。 また、 >それと_root.a._x = 50と >  _root[a]._x = 50の違いが >いまだ分からず困っています。 _root[a] これは_rootという構造体の中のプロパティaに対しての値をあらわします。でもaに””がついていないので、これはさらにプロパティまでもが変数ということになります。 従って、一度aにストリング、もしくは値が入り、そのあと、さらに構造体_rootの中から対応する値がはじきだされるというわけです。 ややこしいですね~。 perlでいえば、これは配列というよりも、連想配列・ハッシュの間隔に近いと思います。 構造体、配列の勉強を一度なさってみてはいかがでしょうか。

riruriruriru
質問者

お礼

なるほどー。ありがとうございました。 解決できました。もっと勉強します。またお願いします!m(_ _)m

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.1

eval()で表現してみては? a = "test" eval("_root.mat"+a) []←は配列を表現する 配列番号を書くところですね

riruriruriru
質問者

お礼

ありがとうございました。 勉強になりました。またお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A