- ベストアンサー
複数の変数宣言を、for文で一気にやる方法ってありますでしょうか?
複数の変数宣言を、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文で一気にやる方法ってありますでしょうか? ご存知のかたいらっしゃいましたら、よろしくお願いいたします。
- みんなの回答 (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書きなのでもしかしたらコードが違うかも知れませんがそこはご容赦下さい;根本は同じはずなので… それでは成功を祈っています。
その他の回答 (4)
- H240S18B73
- ベストアンサー率65% (190/288)
4です 追加です xx["xx"]とやった場合 型宣言もできないです ってことで var this["tf"+i:TexrField ↓ this["tf"+i] あと、先に言ってるひとがいますが 配列で作ったほうが、何個あるのかすぐ調べれるし for each()で巡回できるしなにかと便利と思います
お礼
非常に参考になりました、ありがとうございます!
- H240S18B73
- ベストアンサー率65% (190/288)
var要らないです
お礼
非常に参考になりました、ありがとうございます!
- joy_28
- ベストアンサー率84% (45/53)
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); }
お礼
非常に参考になりました、ありがとうございます!
- joy_28
- ベストアンサー率84% (45/53)
以下で行けるでしょう。 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); }
お礼
非常に参考になりました、ありがとうございます!
お礼
みなさま、すばやいご回答をたくさんありがとうございました。 おかげさまですぐに解決することができました。 本当にありがとうございました!