Action script 3.0 Lanquage Reference 가이드 (F1 보기)
playerGlobal.swc
우리가 사용하는 3.0 에서 flash. 으로 시작되는 패키지들은 모두 playerGlobal.swc 라는 라이브러리 파일에 들어있습니다. Flex SDK 를 열어보면 frameworks/libs 폴더 안에 들어있습니다.
flash 의 경우 fl. 이라는 패키지들이 같이 포함되어 있고, flex 의 경우엔 mx. 이라는 패키지들이 같이 포함되어있죠.
이
fl 이나 mx 라는 것들은 콤보박스 같은 UI 콤포넌트들과 Easing 같은 모션그래픽 같은 기능들을 포함하고 있고, (mx
의 경우엔 그 분량이 fl 과는 비교할 수 없을 정도로 방대합니다.) 소스가 공개되어 있어서 파일 경로만 찾는다면 내부 소스를
확인할 수도 있습니다. 어느정도 수준이 되면 공부하느라고 자주 찾아보게 되는 소스들입니다.
flash.data.*
AIR 에서 사용됩니다. SQLite(에스큐라이트)를 다루는데 필요한 기능들이 들어있습니다.
flash.desktop.*
AIR
의 desktop application 을 제작하는데 필요한 여러가지 기능들이 모여 있습니다. OS 의 system tray 나
AIR application 에 대한 update, Clipboard 접근 등의 기능을 지원합니다.
Clipboard 의 경우 text 에 한해서 web application 에서도 사용할 수 있습니다.
flash.display.*
보
통 가장 많이 사용하는 MovieClip, Sprite, BitmapData 등 화면에 표시되는 기능들을 포함하고 있습니다.
최근 벡터그래픽 드로윙이 개편되어서 Graphics 로 시작되는 Class 들이 엄청나게 늘어났는데, 이것들은 무시해도 됩니다.
보
통 기초단계에서 꼭 봐야할 기능은 DisplayObject, InteractiveObject,
DisplayObjectContainer, Sprite, MovieClip, SimpleButton 정도이고, 이것들을 떼고 좀
더 고급 화면표시를 배우고자 할때 BitmapData, Bitmap, Shape 등을 봐줍니다. 그렇게 기초적인 디스플레이
기술들에 알게 되면 Stage 의 Event.RESIZE 와 stageWidth, stageHeight 등을 통해 전체 플래시
어플리케이션 정렬법 등을 배워두면 됩니다.
이 후 MovieClip 에 대한 고급제어가 필요할때 FrameLabel, Scene 등을 보고,
벡터 그래픽 드로윙을 할때는 flash.geom.Matrix 와 함께 Graphics... 로 시작되는 것들과 JointStyle, CapsStyle 등을 보고,
비트맵 드로윙을 할때는 역시 flash.geom.Matrix 와 함께 BitmapData 를 봐주고,
swf 들을 여러개로 분해해서 어플리케이션을 구성할때 Loader 등을 봐주도록 합니다.
(드로윙을 할때 Matrix 를 이해못하면 여러모로 어려움을 많이 겪게됩니다.)
최근엔 Shader 에 관련된 기능들도 많이 나왔는데, 이건 저도 아직 안써봐서 뭐라 말하기 어렵네요.
flash.errors.*
여
러가지 Error 들이 포함되어 있습니다. 기초 레벨에선 자주 사용되지 않지만, 공용 라이브러리 등을 만들때나 네트워크 작업을
할때 부터는 조금씩 사용하게 됩니다. debug player 를 깔고 웹서핑을 할때 종종 뜨는 경고창들이 바로 이 Error
들을 알려주는 것입니다.
직접 만든 Custom Error 들을 꼼꼼하게 사용하면 다른 개발자가 라이브러리를 사용할때 큰 도움이 되게 됩니다.
flash.events.*
ActionScript
3.0 의 핵심중에 하나라고 볼 수 있는 IEventDispatcher 와 EventDispatcher, Event 를 포함한
패키지 입니다. 이야기한 세가지를 이해하지 않으면 ActionScript 3.0 의 가장 최하 기본을 모른채 공부하고 있다고 할
수 있을겁니다.
뭐가 이야기한 세가지는 꼭 봐둬야 하며, 나머지 Class 들은 여러저기 사용되는 event 들입니다.
보통 UI 구성시에는 MouseEvent, KeyboardEvent, TextEvent 를 꼭 봐둬야 하고,
Loader, URLLoader 등의 웹자원 활용 기능을 만들땐 ProgressEvent, NetStatusEvent, IOErrorEvent 등을 봐둬야 합니다.
Timer 를 돌릴때 사용되는 TimerEvent 도 있습니다.
flash.external.*
html 의 javascript 와 통신하는데 사용하는 ExternalInterface 가 들어있습니다.
flash.fileSystem.*
AIR 에서 desktop 의 file, directory 등을 읽고, 쓰고 하는 기능들을 만드는데 사용합니다.
인터넷 상의 자원을 활용하는 flash.net.* 과 비교해보면 재밌습니다.
flash.filters.*
DropShadow, BlurFilter 들을 만드는데 사용합니다. DisplayObject.filters 와 같이 봐두고, 비트맵 드로윙 등을 할때도 사용할 수 있습니다.
쓰는건 무지 쉽지만, 막 쓰면 성능에 치명적인 영향을 미치게 되므로 절제가 필요한 기능입니다.
flash.geom.*
왜곡, 변형 등의 기능들을 포함합니다.
기초단계를 지나기 시작하면 Matrix, Point, Rectangle 을 매우, 매우 자주 사용하게 됩니다. 행렬, 거리계산 등의 수학적 지식이 뒷받침 되어야지 보다가 머리털 빠지는 일이 없습니다.
flash.html.*
AIR 에서 사용됩니다. HTMLLoader 가 Sprite 를 상속받은걸 보면 알겠지만 Flash 내부에서 HTML 객체를 만들고 컨트롤 하는데 사용됩니다.
flash.media.*
Sound, Video 등을 다루는데 필요한 기능들이 모여있습니다. Camera 나 Microphone 처럼 입력되는 멀티미디어 데이터를 다루는데도 사용되구요.
flash.net.*
서버 데이터 연동, swf 로드무비, 이미지 웹에서 불러오기 등의 인터넷 자원 연동을 할때 꼭 필요합니다.
기
초적으로 navigateToURL(), sendToURL(), URLLoader, URLRequest, URLVariables
는 꼭 봐줘야 하고, 조금 지나서 파일 업로드, 다운로드 기능을 사용할때는 FileReference 정도를 보게 됩니다.
시
간이 좀 지나면 네트웍 게임등을 만들때 사용하는 Socket, cookie 와 비슷하게 사용할 수 있는 SharedObject,
swf 들끼리 서로 통신하는데 필요한 LocalConnection 등을 보게 되기도 합니다. 고급기능들이니깐 기초단계에서는 자주
사용되지 않습니다.
flash.printing.*
프린터를 통해서 출력하는데 필요한 기능들이 포함되어 있습니다.
flash.sampler.*
저도 사용해보지는 않았는데, 디버깅 상황에서 좀 더 상세한 정보들을 수집하는데 사용되는 것 같습니다. (아마도...)
Object 하나가 얼마의 memory 를 사용하는지를 알 수 있기도 하고... 뭐 여러모로 배워두면 좋을것 같은데, 나온지 얼마 안되서 저도 아직 잘 모르네요.
flash.system.*
보안에 관련된 기능들을 다루게 됩니다. cross domain 작업등을 하다보면 자주 접하게 됩니다.
Loader 를 통해서 불러온 swf 에서 Class 를 뽑을때 사용하는 ApplicationDomain 도 있습니다. 자원의 분리, 재활용을 할때 한번쯤 보게 되는 Class 입니다.
flash.text.*
TextField 로 대표되는 flash 의 text 기능을 다룰때 보게 되는 매우 중요한 패키지 입니다.
기본적으로 TextField 와 TextFormat 등을 보게되고, embed font 등을 만질때는 Font 도 자주 접하게 됩니다.
조금 고급제어를 하게 되면 TextLineMetric 등을 통해서 TextField 상의 행, 열 등을 만지게 되기도 합니다.
최
근엔 FTE(flash text engine) 라고 부르는 flash.text.engine.* 기능이 추가되어서 앞으로 점점
사용도가 줄어들 기능입니다. Flex4 gumbo 정도 부터는 FTE 를 확장한 flashx.text.* 의 패키지로 구성된
text layout framework 가 TextField 를 대체하게 될 것입니다. undo, redo, rich edit,
data formatting 등을 지원하므로 내년 정도엔 지금은 html 에 밀려 뜸한 flash 를 사용한 rich text
application 을 자주 보게 될겁니다.
flash.text.engine.*
위에서 이야기한 FTE 입니다. flash 에서 text 를 제어하는 새로운 방식이지만, TextField 처럼 손쉽게 사용하기는 무리가 있습니다.
flash.ui.*
마
우스 오른클릭을 하면 나오는 context munu 에 대한 커스터마이징이나 마우스 포인터 모양 바꾸기, 비밀번호 입력등에서
실수하기 쉬운 키보드의 caps lock, num lock 등이 활성화 되어있는지를 알아내는등의 기능을 만드는데 필요합니다.
flash.utils.*
최고수가 사용하는 막강 무공중 하나인 ByteArray 나 EnterFrame 대신 사용할 수 있는 Timer, 대리자를 만들때 사용하는 Proxy 등이 있습니다.
기
초레벨에서는 디버깅시에 유용한 getQualifiedClassName(), getQualifiedSuperClassName()
등은 꼭 알아두는게 좋고, 뭐 성능테스트 같은걸 하려면 getTimer() 를 알아두는 것도 좋습니다. (getTimer() 로
알아낸 시간 두개를 b-a 형식으로 빼서 얼마의 시간이 소요되는지를 테스트 하게 됩니다.)
Timer 놔두고 interval 을 사용하는 분은 없을거라 믿습니다.
flash.xml.*
최상위의 XML 을 사용하면 딱히 볼 일 없습니다. 2.0 버전때 사용하던 xml 컨트롤 입니다.
Top Level
기초단계에서는 flash.display 나 flash.net, flash.text 등을 자주 보게 되지만, 중급을 넘어서면서 부터는 여기를 무지하게 자주 보게 됩니다.
Vector,
Array, XML, String, RegExp, Math, Date 등의 "우하하 기초~" 하면서 웃다간 캐작살 나기 쉬운
심오한 세계들이 존재하는 Top Level 이니, 왠만큼 조금 한다 싶을때 부터는 꼼꼼하게 공부하는게 좋은 내용들이 많습니다.