as 3.0 귀찮은 import 키워드.

[FLASH/Classes]

class를 공부하다가 항상 import를 써서 사용(Java, C)을 하지 않으면 절대경로로 접근하던가 해야 하는데 난 이것을 한군데서 받을 수 없을까를 고민해 봤다.

일반적으로 타임라인(Timeline)에서 작업을 하면 바로 사용할 수는 있지만, 자신이 만든 class는 import를 하지 않은 이상 아니면, Preference > Language > Actionscript 3.0 Settings 또는 class 상에서 절대경로로 위치를 잡아주지 않는 이상 사용할 수가 없다. 그래서 난 매 페이지 마다 중복되는 import를 무시하고 사용할 수 있는 방법을 찾아보다가 아래와 같이 만들어 보았다.

FB3(Flex Builder 3)에서 자동적으로 생성이 된다는 말에 약간의 타격을 받았지만!! 어쨌든 3~4시간을 고민하면서 잘 하지도 못하는 class로 만들어 보았다.

타입 유형 체크를 하지 못하는 단점을 갖고 있지만, 언제부터 플래시가 타입선언을 하면서 언어로 자리 잡은것인가!!! 대충 코드 넣고 최적화에 신경 좀 써주고 비주얼만 잘 뽑아내면 된다. 코드는 사용자에겐 아무 소용이 없다. 디자이너 분들이여 그대들의 위치를 사수하고 자신과 맞지 않는 것을 하기 위해 너무 무리하게 힘 낭비를 하지 말았으면 좋겠다. 자신의 재능을 먼저 찾아 볼 수 있는 디자이너가 되었으면 좋겠다.

"사용자는 내면의 가치 보다 외면의 가치에 만족하게 되어있다."
(그냥 내 생각을 쓰고 싶었다. 아래 코드와는 상관 없다.)

## Color 변환 프로그램은 우야꼬(윤진상)님의 ASDecorator air 파일로 변환함.
## Document Class

- FileName : GlobalPathofClass.as

package
{
    import flash.display.MovieClip;
    // 해당되는 import를 하나의 클래스에 담아서 사용한다.
    // 현재 클래스명이 길지만 이것을 짧게 처리 한다면, 짧게 접근하여 처리가 가능해진다.
    import jin_u.GlobalImport;
    //
    public class GlobalPathofClass extends MovieClip
    {
         public function GlobalPathofClass ():void
         {
              trace ("## GlobalPathofClass constructor");
              // 클래스 확인
              trace ("GlobalImport._MovieClip = ",GlobalImport._MovieClip);
              trace ("flash.display.MovieClip = " + flash.display.MovieClip);
             trace ("GlobalImport._MovieClip == flash.display.MovieClip = ",GlobalImport._MovieClip == flash.display.MovieClip);

              // ClassA 클래스 테스트
              trace ("GlobalImport._ClassA = " + GlobalImport._ClassA);
              var ca:* =new GlobalImport._ClassA() ;
              ca.setName ("jin_u");
              trace ("## GlobalImport._ClassA : ca.setName() = ","jin_u");
              trace ("## GlobalImport._ClassA : ca.getName() = ",ca.getName());

              // ClassB 클래스 테스트
              var tf:* =new GlobalImport._ClassB() ;
              addChild (tf.createTextField("Test of GlobalImport Class",20,20));
         }
    }
}

- FileName : jin_u/GlobalImport.as
package
jin_u

{
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
    //
    import jin_u.classA.ClassA;
    import jin_u.classB.ClassB;
    //
    public class GlobalImport
    {
         // 내장 클래스 정의
         public static const _Sprite:* = Sprite;
         public static const _MovieClip:* = MovieClip;
         public static const _TextField:* = TextField;
         public static const _TextFieldAutoSize:* = TextFieldAutoSize;
         public static const _TextFormat:* = TextFormat;
         // 외장 클래스 정의
         public static const _ClassA:* = ClassA;
         public static const _ClassB:* = ClassB;
    }
}

- FileName : jin_u/classA/ClassA.as
package jin_u.classA
{
    public class ClassA
    {
         private var name:String;
         //
         public function ClassA ():void
         {
              trace ("## ClassA constructor");
         }
         public function setName (pname:String="nobody"):void
         {
              name=pname;
         }
         public function getName ():String
         {
              return name;
         }
    }
}

- FileName : jin_u/classB/ClassB.as
package
jin_u.classB
{
    import jin_u.GlobalImport;
    //
    public class ClassB
    {
         public function ClassB ():void
         {
              trace ("## ClassB constructor");
         }
         public function createTextField (str:String, x:Number, y:Number):*
         {
              trace ("## ClassB : createTextField (",str,",", x,",", y,")");
              //
              var label:* = new GlobalImport._TextField();
              label.text = str;
              label.x = x;
              label.y = y;
              label.autoSize = GlobalImport._TextFieldAutoSize.LEFT;
              label.background = true;
              label.border = true;

              var format:* = new GlobalImport._TextFormat();
              format.font = "Verdana";
              format.color = 0xFF0000;
              format.size = 12;
              format.underline = true;

              label.defaultTextFormat = format;

              return label;
         }
    }
}

사용자 삽입 이미지

2008/05/12 14:56 2008/05/12 14:56

이 글의 트랙백 주소 :: http://jinustudio.com/weblog/trackback/585

::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다