• ベストアンサー

AS3の変数宣言で、変数名+00や01など変更しながら使いたい

ActionScript3.0でnew演算子などで 変数(例えばobj)などを宣言する際に ある条件ならobj00、またある条件ならobj01 など条件に合わせて最後の2文字を変更したいです。 bnという変数に条件に従って00や01を代入して 以下のように作りましたがうまくいかないです。 ▼00の場合 var bn:String = "00"; var "obj"+bn: Loader = new Loader(); 分かる方は教えて下さい。宜しくお願いします。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1 です。 > ReferenceError: Error #1056: Upload のプロパティ obj00 を作成できません。 > と表示されてしまいます。 例えばファイルの構造を次のようにして,  任意のフォルダ     ├名称未設定-1.fla (ファイル名は何でも良いです)     └00.jpg 「名称未設定-1.fla」 のフレーム1 ------------------------------------ var bn:String="00"; this["obj"+bn] = new Loader(); this["obj"+bn].load(new URLRequest(bn+".jpg")); addChild(this["obj"+bn]); ------------------------------------ そして 「制御」→「ムービープレビュー」。 何のエラーもなくパブリッシュ&動作検証できますよ。 クラスファイルの中とか, 書く場所などの条件が関係するのではないでしょうか。 「this」 は場合によって変わります。

reimy1
質問者

お礼

おかげさまで解決しました。 実はドキュメントクラスを「Upload」 にしていたので「this」を「Upload」に 変更したUpload["obj"+bn]とすると 変数のやりとりがうまくいきました。 勉強になりました。ありがとうございました。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

Flash Lite 1.x を除くとする場合, AS1.0 でも 2.0 でも 3.0 でも, ご質問のような場合は 配列アクセス演算子 を使うのが一般的です。 ▼00の場合 var bn:String="00"; this["obj"+bn] = new Loader(); 以下は this["obj"+bn].load(○○) や obj00.load(○○) のように使います。 --------------------------------- たまにインスタンスを動的に作成するのではなく, クラス(上記の場合 Loader)を動的に指示したい場合があります。 そんなとき, ActionScript 3.0 では Class(getDefinitionByName("文字列")) を使用します。 「[AS3] クラスを文字列で参照したい」 http://f-site.org/articles/2008/01/17051234.html

reimy1
質問者

補足

ご回答ありがとうございます。 配列アクセス演算子って使えそうですね。 試しにご教授された var bn:String="00"; this["obj"+bn] = new Loader(); を入力しましたが ReferenceError: Error #1056: Upload のプロパティ obj00 を作成できません。 と表示されてしまいます。 このエラーの意味をネットで調べたのですがちょっと 理解が出来なかったです。難しいですね。