AS3 ループ処理で変数宣言の定義? | 東京都世田谷区 ホームページ制作 [k]id

AS3 ループ処理で変数宣言の定義?

Category Flash Tips Update 2009.05.20

twitterfacebookgoogle+はてなブックマークPocketであとで読むfeedlyで購読

ああ、なるほどね、そういう考えもあるな、、
という質問をいただいたのでご紹介

FlashのASに限らず、スクリプトで変数を定義する場合
まとめて一括で変数を定義したい場合に遭遇する事が多々あると思います。

例えば

var a1:String,a2:String,a3:String,a4:String,a4:String.....

みたいな感じですね。

ご質問をいただいた方はそれをforのループで一括宣言が出来ないかと
お考えになったらしいのです。

for (var i:uint = 0; i <10; i++) {
["var a"+i] = new String;
}

みたいなイメージですね。

なるほど、、こういう風に考えたくなる気持ちもわかります。
でも、多分、エラーが返されてしまうとおもうのです。

色々な回避方法があると思うのですが、
こんな感じでご説明さし上げました。

例はとりあえずSpriteで●を生成する例です。

var listArray:Array = [];
for (var i:uint = 0; i <20; i++) {
var tmp:Sprite = new Sprite();
listArray.push( tmp );
listArray[i].graphics.beginFill(Math.random() * 0x1000000);
listArray[i].graphics.drawCircle(0, 0, 10);
listArray[i].graphics.endFill();
}

取り出すときは
for eachとかforとかで

for (var i:uint = 0; i <listArray.length; i++) {
listArray[i].x = i+10;
addChild(listArray[i]);
}

みたいな感じで
どうでしょうか?

ページトップへ