【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

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

A 回答 (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」 は場合によって変わります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/05 09:44

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

この回答への補足

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

補足日時:2009/08/27 21:45
    • good
    • 0

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


おすすめ情報