블로그 이미지
플래시 개발자랍니다... 하지만 여긴 플래시 전문 블로그가 아닌 그냥 개인 블로그랍니다
미나토

Recent Comment

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 40,987total
  • 8today
  • 22yesterday
2009/03/02 10:41 Flash Platform


코드
////////////////////////////
var st:uint = getTimer();

var sp:Shape = new Shape();
for(var i:uint; i<10000000; i++)    addChild(sp);

trace(getTimer() - st);


결과
//////////////////
2631
2882
2881
3265
3481
2790
2876
3162
3596



코드
////////////////////////////
var st:uint = getTimer();

var sp:Shape = new Shape();
for(var i:uint; i<10000000; i++)    addChildAt(sp, 0);

trace(getTimer() - st);


결과
//////////////////
2280
2969
2894
2379
2424
2881
2329
2345
2274
2872



귀찮아서 평균 값은 생략...


대충 봐도 addChildAt 이 약간 빠르다는 걸 알 수 있다.

addChild 가 코드 내부적으로 addChildAt(sp, numChildren) 을 하는 것인 지는 알 수 없으나 어쨌든 결과는 이렇다는...



크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토
2007/06/15 14:42 Flash Platform

http://www.minarto.com/31 이건 전의 글이고.... 거기에 조금 더 덧붙일 것이 생겼다.



스테이지에 mc1, mc2 라는 무비클립을 만들어 놓고 다음의 코드를 집어넣어보자

var tf:TextField = new TextField();
tf.text = "dsfsfasfsafas";
mc1.addChild(tf);


mc1 에 텍스트가 생긴 것을 볼 수 있을 것이다. 그럼 다음의 코드를 추가해보자

var tf:TextField = new TextField();
tf.text = "dsfsfasfsafas";
mc1.addChild(tf);
mc2.addChild(tf);


mc2에는 텍스트 필드가 생기고 mc1 에서 생긴 것을 볼 수 있다.

그렇다면 마지막으로 다음의 코드를 보자

var tf:TextField = new TextField();
tf.text = "dsfsfasfsafas";
mc1.addChild(tf);

mc1.addEventListener(Event.REMOVED, remove);
function remove(e:Event):void
{
 trace(e);
}

mc2.addChild(tf);



이벤트가 발생함을 확인할 수 있을 것이다.

요컨데 이미 addChild 된 디스플레이 오브젝트를 다른 디스플레이 오브젝트에 addChild 하게 되면 자동적으로 removeChild 메소드가 실행된다....는 결론...
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토
2007/06/04 11:01 Flash Platform

var sp1:Sprite = new Sprite();
addChild(sp1);
var sp2:Sprite = new Sprite();
addChild(sp2);
sp2.y = 400

var shape:Shape = new Shape();
shape.graphics.beginFill(0xFFFF00);
shape.graphics.drawCircle(0, 0, 200);

sp1.addChild(shape);
sp2.addChild(shape);


두개의 DisplayObject 클래스를 화면에 올려놓고 또하나의 DisplayObject  클래스를 만들어 집어넣어보았다.

그냥 단순한 생각으로는 두군데 모두 들어가야 맞다고 생각했으나 그게 아니었다. DisplayObject 클래스에는 clone 메소드도 없으니 결국 new 로 새 DisplayObject 를 생성해야 한다.

sp1 과 sp2에서 shape 를 참조하는게 아니라 shape 에서 자신이 addChild 된 DisplayObject 클래스를 찾는 것일까?


생각해 볼 문제다.
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토
2007/05/16 15:23 Flash Platform
as2.0 에 익숙해진 손가락 때문일까?

가끔 선언만 하고선 addChild 를 안해서 플래시가 제대로 안돌아갈 때가 있다...(대부분의 경우 이때는 에러도 안뜬다)


그리고나서는 버그를 찾기 위한 삽질... 컴파일러 창이 좀 바껴서 익숙치도 않다



addChild 를 잊지 말자...
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토