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;
}
}
}

GlobalPathofClass.alz

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