본문 바로가기

Actionscript3.0

[AS3.0] Linkage 로 클래스 연결 하기.

동적으로 라이브러리에 있는 무비 클립이나 bitmap 파일을 어떻게 불러 올수 있을까요? 

as3.0 에서 class 개념이 좀더 확장 되면서 Linkage 에서 identifial 지정 뿐만 아니라 class 및 base 클래스를 지정 할수 있습니다. 라이브러리에 있는 객체들을 동적으로 불러 오기 위해서는 Linkage 와 class 와 new 와 addChild 이 필요 합니다.   

우선 Linkage 창을 보면 (라이브러리에서 우클릭 Linkage)


Export for Actionscript 를 클릭하면

 무비 클립을 Linkage 하셨다면 flash.display.MovieClip 가 Base로 지정되게 되고 자신이 이름 붙일수 있는 Class 창이 활성화 됩니다 ( 여기서는 cursor ) 원하는 class 이름을 써 놓고 ok 를 누르게 되면 이제 해당 객체가 클래스로 정의가 된 것입니다. (매우 간단히 클래스를 만들수 있다는 ) ( 아마 내부적으로  fla 파일에 매여 있는 class 가 생성됩니다. )

만약 아래와 같은 무비 클립을 Linkage 하셨다면.

 

var cur:cursor = new cursor(); <-- var mc:MovieClip = new MovieClip();
addChild(cur);

하게 되면 좌표 0,0 값에 cur 가 보여 지게 됩니다.

 

동적으로 다른 위치에 5개 생성 

for(var i:int= 0; i < 5; i++){

     var cur:cursor = new cursor();
     cur.x = i*5;
     addChild(cur);

}

 이런식으로 연결하여 사용하시면 되고요, 이것 이용해서 우리가 지금까지 토의 했던 상속이라는 개념을 적용할수 있습니다. 위의 cursor는 단지 화살표 모양의 무비 클립일 뿐 속성이 정의가 안되어 있는데 여기서 속성을 추가해 보겠습니다. 같은 폴더에 Ccursor.as 를 생성하시고 아래 코드 입력. 


  1. // 테스트를 위한 Ccursor 생성
  2.  
  3. package{
  4.  import flash.display.*;
  5.  import flash.events.*;
  6.  
  7.  public class Ccursor extends cursor           //fla 파일에서 정의한 cursor class 를 상속 받는다.
  8.  {
  9.   public function Ccursor():void
  10.   {
  11.    addEventListener(MouseEvent.MOUSE_OVER, Overhandler);
  12.    addEventListener(MouseEvent.MOUSE_OUT, Outhandler);
  13.      
  14.   }
  15.   private function Overhandler(ev:MouseEvent):void
  16.   {
  17.    trace("오버");
  18.   }
  19.   private function Outhandler(ev:MouseEvent):void
  20.   {
  21.    trace("아웃");
  22.    
  23.   }
  24.  
  25.  }
  26.  
  27. }

 
  1. //fla 파일 두가지 종류의 클래스 생성
  2.  
  3. var cur:cursor = new cursor();
  4. cur.x = 200;
  5. cur.y = 200;
  6. addChild(cur);
  7.  
  8.  
  9.  
  10. var cur2:Ccursor = new Ccursor();
  11. cur2.x = 300;
  12. cur2.y = 200;
  13. addChild(cur2);

 

 Ccursor class 로 addChild 된 왼쪽 객체 만이 마우스 이벤트에 반응하게 됩니다. 이와 같이 Flash 는 라이브러리에 있는 사용자 정의 객체들을 자유 롭게 사용할수 있는 편안한 인터페이스를 제공합니다.