[k]id » AS3 ループ処理で変数宣言の定義? 

2009年5月20日

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

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

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]);
}
みたいな感じで
どうでしょうか?


この記事を読んだ方は下記の記事も読んでいます。

コメント・トラックバック

トラックバック

コメントをどうぞ

カテゴリー: Flash Tips
タグ: ,

Get Adobe Flash playerPlugin by wpburn.com wordpress themes