アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数の変数宣言を、for文で一気にやる方法ってありますでしょうか?

たとえば、tfという変数を3つ作りたいとき、

var tf1:TextField = new TextField();
var tf2:TextField = new TextField();
var tf3:TextField = new TextField();

↑このように普通に書くのではなく

for(var i:int=0; i<3; i++){
 var this["tf" + i]:TextField = new TextField();
}

↑このようにfor文で一気に書こうとしたのですがエラーになります。

複数の変数宣言を、for文で一気にやる方法ってありますでしょうか?
ご存知のかたいらっしゃいましたら、よろしくお願いいたします。

A 回答 (5件)

同じ要素のデータを複数個作る時は、配列を使うと良いですよね。


恐らく下の文で配列を使おうとはしているのですが、配列(のメンバ)と変数の違いがよく理解されていないのが問題かと思います。

上では、tf1,tf2,tf3の、3つの変数を宣言していますが、
下の文では、thisという配列要素の"tf"+iというメンバに値をセットしつつ宣言をしようとしています。しかし配列のメンバは変数ではないため、何の宣言をしているのかわからなくなっています。
なお、このとき存在する変数は、thisという配列変数1つだけです。

何が言いたいかというと、配列は、配列自体が1つの変数であって、そのメンバーは変数宣言は必要有りません。

実際のところ、エラーが出るのは配列のメンバーを宣言するという行為にあるわけですが、そもそもthisという配列は本来もともと定義されているので使うのはよろしくないと思います。

下のコードをより的確にすると、

var tf:Array = new Array();//tf配列を宣言
for(var i:int = 0; i < 3; i++ ){
tf[i] = new TextField();//tf[0]、tf[1]、tf[2]にTextFieldオブジェクトを生成して代入
}

となるはずです。
普段はJavaScript書きなのでもしかしたらコードが違うかも知れませんがそこはご容赦下さい;根本は同じはずなので…

それでは成功を祈っています。
    • good
    • 0
この回答へのお礼

みなさま、すばやいご回答をたくさんありがとうございました。
おかげさまですぐに解決することができました。
本当にありがとうございました!

お礼日時:2010/01/02 15:58

4です



追加です
xx["xx"]とやった場合
型宣言もできないです

ってことで

var this["tf"+i:TexrField



this["tf"+i]


あと、先に言ってるひとがいますが
配列で作ったほうが、何個あるのかすぐ調べれるし
for each()で巡回できるしなにかと便利と思います
    • good
    • 0
この回答へのお礼

非常に参考になりました、ありがとうございます!

お礼日時:2010/11/22 16:29

var要らないです

    • good
    • 0
この回答へのお礼

非常に参考になりました、ありがとうございます!

お礼日時:2010/11/22 16:30

var max:uint=5;//5個生成


/*for (var i:uint=0;i<max;i++){
this["txt"+i]=new TextField();
addChild(this["txt"+i]);
this["txt"+i].x=100;
this["txt"+i].y=10+30*i;
this["txt"+i].text=String(i);
}*/
//以下のようにも、書けます。普通は、私は、こっちの方法を採ります。
for(var i:uint=0;i<max;i++){
var tf:TextField=new TextField();
addChild(tf);
tf.x=100;
tf.y=10+30*i;
tf.text=String(i);
}
    • good
    • 0
この回答へのお礼

非常に参考になりました、ありがとうございます!

お礼日時:2010/11/22 16:30

以下で行けるでしょう。


var max:uint=5;//5個生成
for (var i:uint=0;i<max;i++){
this["tf"+i]=new TextField();
addChild(this["tf"+i]);
this["tf"+i].x=100;
this["tf"+i].y=10+30*i;
this["tf"+i].text=String(i);
}
    • good
    • 0
この回答へのお礼

非常に参考になりました、ありがとうございます!

お礼日時:2010/11/22 16:30

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