[AS 3.0] for문을 이용해서 동적으로 오브젝트 생성하기
AS 3.0에서도 for문과 배열을 이용하면 오브젝트를 동적으로 생성할 수 있다.
Case1
생성하려는 오브젝트의 갯수가 정해져 있을 경우.
package {
import flash.display.Sprite;
public class Main extends Sprite {
private var circleNum:int = 20;
private var sW:int = stage.stageWidth;
private var sH:int = stage.stageHeight;
private var radius:Number = 100;
public function Main():void{
var ary:Array = new Array(circleNum);
for (var i:Number = 0; i < 20; i++) {
ary[i] = new Sprite();
ary[i].graphics.beginFill(Math.random() * 0xFFFFFF, Math.random());
ary[i].graphics.drawCircle(Math.random() * sW, Math.random() * sH, Math.random() * radius);
ary[i].graphics.endFill();
ary[i].name = "Circle" + i;
addChild(ary[i]);
}
}
}
}
Case2
생성하려는 오브젝트의 갯수가 정해져 있지 않을 경우.
package {
import flash.display.Sprite;
public class Main extends Sprite {
private var sW:int = stage.stageWidth;
private var sH:int = stage.stageHeight;
private var radius:Number = 100;
public function Main():void{
var ary:Array = new Array();
var circleNum:int = 20;
for (var i:Number = 0; i < circleNum; i++) {
var sp:Sprite = new Sprite();
sp.graphics.beginFill(Math.random() * 0xFFFFFF, Math.random());
sp.graphics.drawCircle(Math.random() * sW, Math.random() * sH, Math.random() * radius);
sp.graphics.endFill();
sp.name = "Circle" + i;
ary.push(sp);
addChild(sp);
}
}
}
}
제어는 아래를 참고
var temp:Sprite = getChildByName("Circle1");
(getChildByName("Circle"+i) as Sprite).x = 100;
