ACTIONSCRIPT™ 3.0 프로그래밍

Similar documents
View Licenses and Services (customer)

IRISCard Anywhere 5

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

gnu-lee-oop-kor-lec06-3-chap7

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Install stm32cubemx and st-link utility

Windows 8에서 BioStar 1 설치하기

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 08.다형성

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

PowerPoint Presentation

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Template

vRealize Automation용 VMware Remote Console - VMware

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

JVM 메모리구조

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft Word - Armjtag_문서1.doc

PowerPoint Presentation

제8장 자바 GUI 프로그래밍 II

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

쉽게 풀어쓴 C 프로그래밍

Studuino소프트웨어 설치

PowerPoint Presentation

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

쉽게 풀어쓴 C 프로그래밍

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

설계란 무엇인가?

제 2 장 기본 사용법

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

System Recovery 사용자 매뉴얼

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

PowerPoint Presentation

Microsoft Word - SecuLetter_ExploitAnalysis_CVE _Ver0.1

쉽게 풀어쓴 C 프로그래밍

Windows Server 2012

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

gcloud storage 사용자가이드 1 / 17

Microsoft PowerPoint - additional01.ppt [호환 모드]

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

쉽게 풀어쓴 C 프로그래밍

ACTIONSCRIPT™ 3.0 프로그래밍

ThinkVantage Fingerprint Software

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

NTD36HD Manual

제11장 프로세스와 쓰레드

CODESYS 런타임 설치과정

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

MVVM 패턴의 이해

17장 클래스와 메소드

ISP and CodeVisionAVR C Compiler.hwp

Operating Instructions

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

슬라이드 1

tiawPlot ac 사용방법

Microsoft PowerPoint - 2강

인쇄하기, 내보내기, 이메일로 문서 보내기

Microsoft Word - flash19.doc

Office 365 사용자 가이드

PowerPoint 프레젠테이션

C++ Programming

Visual Basic 반복문

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Microsoft PowerPoint - C++ 5 .pptx

EEAP - Proposal Template

오버라이딩 (Overriding)

MF Driver Installation Guide

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Design Issues

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

Network Programming

메뉴얼41페이지-2

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

Microsoft Outlook G Suite 가이드

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

SBR-100S User Manual

MF3010 MF Driver Installation Guide

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

Slide 1

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

ACTIONSCRIPT™ 3.0 프로그래밍

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

로거 자료실

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Transcription:

제 16 장 무비클립을사용한작업 16 MovieClip 클래스는 Adobe Flash CS3 Professional 에서생성한애니메이션및무비클립심볼의기본클래스입니다. MovieClip 클래스는표시객체의모든비헤이비어및기능은물론무비클립의타임라인을제어하기위한추가속성및메서드까지가지고있습니다. 이장에서는 ActionScript 를사용하여무비클립재생을제어하고동적으로무비클립을만드는방법에대해설명합니다. 목차 무비클립의기초........................................461 무비클립재생제어..................................... 464 ActionScript를사용하여 MovieClip 객체만들기............ 467 외부 SWF파일로드.................................... 470 예제 : RuntimeAssetsExplorer.......................... 472 무비클립의기초 무비클립을사용한작업소개 무비클립은 Flash 제작도구를사용하여애니메이션내용을만들고 ActionScript를사용하여그내용을제어하는사람들에게중요한요소입니다. Flash에서무비클립심볼을만들때마다해당 Flash 문서의라이브러리에심볼이추가됩니다. 기본적으로이심볼은 MovieClip 클래스의인스턴스가되고 MovieClip 클래스의속성과메서드를가지게됩니다. 무비클립심볼의인스턴스를스테이지에배치하면 ActionScript를사용하여무비클립의재생을변경하지않는한, 무비클립이자동으로타임라인을따라진행됩니다 ( 프레임이둘이상일경우 ). MovieClip 클래스를구별하는것은이타임라인으로, Flash 제작도구에서모션트윈이나모양트윈을통해애니메이션을만들수있습니다. 반면 Sprite 클래스의인스턴스인표시객체의경우에는프로그래밍을통해값을변경하는방법으로만애니메이션을만들수있습니다. 461

이전버전의 ActionScript 에서는 MovieClip 클래스가 Stage 의모든인스턴스의기본클래스였습니다. ActionScript 3.0 에서무비클립은스크린에표시할수있는여러표시객체중하나일뿐입니다. 표시객체의기능에타임라인이필요하지않은경우 MovieClip 클래스대신 Shape 클래스나 Sprite 클래스를사용하면렌더링성능을높일수있습니다. 작업에적합한표시객체를선택하는것에대한자세한내용은 370 페이지의 DisplayObject 하위클래스선택 을참조하십시오. 일반적인무비클립작업 이장에서는다음과같은일반적인무비클립관련작업에대해설명합니다. 무비클립재생및중단 반대방향으로무비클립재생 무비클립타임라인의특정시점으로재생헤드이동 ActionScript에서프레임레이블사용 ActionScript에서장면정보액세스 ActionScript를사용하여라이브러리무비클립심볼인스턴스만들기 이전 Flash Player 버전용으로만든파일을비롯하여외부 SWF 파일로드및제어 런타임시로드해서사용할그래픽에셋을생성하기위한 ActionScript 시스템구축 중요한개념및용어 다음은이장에서사용된중요용어참조목록입니다. AVM1 SWF: ActionScript 1.0 또는 ActionScript 2.0으로만든 SWF 파일로대개 Flash Player 8 또는이전버전을대상으로합니다. AVM2 SWF: ActionScript 3.0을사용하여생성하는 Adobe Flash Player 9용 SWF 파일입니다. 외부 SWF: 프로젝트 SWF 파일과는별개로생성된 SWF 파일로, 프로젝트 SWF 파일로로드되어이프로젝트 SWF 파일내에서재생됩니다. 프레임 : 타임라인의가장작은시간구획입니다. 영화필름스트립과같이각프레임은특정시점의애니메이션스냅샷과유사하며, 이러한프레임을차례로빠르게재생하면애니메이션효과가연출됩니다. 타임라인 : 무비클립의애니메이션시퀀스를구성하는일련의프레임을은유적으로표현한것입니다. MovieClip 객체의타임라인은 Flash 제작도구의타임라인에해당합니다. 재생헤드 : 특정순간에표시되는타임라인내위치 ( 프레임 ) 를나타내는표시자입니다. 462 무비클립을사용한작업

이장의예제를사용하여작업 이장의내용을따라작업하면서예제코드샘플을직접테스트할수있습니다. 이장은 ActionScript의무비클립작업을다루므로, 기본적으로이장의모든코드샘플은생성되어스테이지에배치되어있는무비클립심볼을조작하는목적으로작성되었습니다. 샘플을테스트하려면코드로심볼을조작한결과를 Flash Player에서확인해야합니다. 이장의코드샘플을테스트하려면 : 1. 빈 Flash 문서를만듭니다. 2. 타임라인에서키프레임을선택합니다. 3. [ 액션 ] 패널을열고 [ 스크립트 ] 창에코드샘플을복사합니다. 4. 스테이지에무비클립심볼인스턴스를만듭니다. 예를들어, 모양을하나그려그모양을선택한다음 [ 수정 ] > [ 심볼로변환 ] 을선택한후, 심볼에이름을지정합니다. 5. 무비클립을선택한상태에서, 속성관리자에서무비클립에인스턴스이름을지정합니다. 이이름은예제코드샘플에서해당무비클립에대해사용한이름과일치해야합니다. 예를들어, 코드샘플에서 mymovieclip이라는무비클립을조작하려는경우무비클립인스턴스이름도 mymovieclip으로지정해야합니다. 6. [ 컨트롤 ] > [ 무비테스트 ] 를사용하여프로그램을실행합니다. 코드샘플에지정된대로무비클립을코드조작한결과가스크린에표시됩니다. 예제코드목록테스트와관련한기타기술에대해서는 60페이지의 이장에제시된예제코드샘플테스트 에서자세하게설명합니다. MovieClip 객체를사용한작업 SWF 파일을제작하면스테이지의모든무비클립심볼인스턴스가 MovieClip 객체로변환됩니다. 속성관리자의 [ 인스턴스이름 ] 필드에무비클립심볼의인스턴스이름을지정하면 ActionScript에심볼을사용할수있습니다. SWF 파일이만들어지면스테이지에 MovieClip 인스턴스를만드는코드가생성되고인스턴스이름을사용하여변수가선언됩니다. 이름이지정된무비클립내에이름이지정된다른무비클립이중첩되어있는경우그러한자식무비클립은부모무비클립의속성으로처리되므로도트구문을사용하여자식무비클립에액세스할수있습니다. 예를들어, 인스턴스이름이 childclip인무비클립이인스턴스이름이 parentclip인다른클립내에중첩되어있는경우, 다음코드를호출하여자식클립의타임라인애니메이션이재생되도록할수있습니다. parentclip.childclip.play() MovieClip 객체를사용한작업 463

ActionScript 2.0 MovieClip 클래스의이전메서드와속성중일부는그대로이지만변경된것도있습니다. 밑줄로시작하는속성이름은모두변경되었습니다. 예를들어, _width 및 _height 속성은이제 width 및 height로액세스되고 _xscale 및 _yscale은이제 scalex 및 scaley로액세스됩니다. MovieClip 클래스의속성및메서드에대한전체목록은 ActionScript 3.0 언어및구성요소참조설명서를참조하십시오. 무비클립재생제어 Flash에서는타임라인메타포를사용하여애니메이션이나상태변경을나타냅니다. 타임라인을사용하는시각적요소는 MovieClip 객체이거나 MovieClip 클래스에서확장해야합니다. ActionScript 명령으로무비클립을중지하거나재생하거나타임라인의다른지점으로이동할수는있지만 ActionScript를사용하여동적으로타임라인을만들거나특정프레임에내용을추가할수는없습니다. 이러한작업은 Flash 제작도구에서만가능합니다. MovieClip을재생하는경우 SWF 파일의프레임속도에의해지정된속도로타임라인을진행합니다. 또는 ActionScript에서 Stage.frameRate 속성을설정하여이설정을덮어쓸수있습니다. 무비클립재생및재생중지 play() 및 stop() 메서드를사용하면타임라인전체에서무비클립의기본컨트롤을사용할수있습니다. 예를들어, 자전거가스크린을가로질러움직이는애니메이션이포함된무비클립심볼이스테이지에있고이클립의인스턴스이름이 bicycle로지정되었다고가정해봅니다. 이경우기본타임라인의키프레임에다음코드가첨부되면, bicycle.stop(); 자전거는움직이지않게됩니다. 다시말해애니메이션이재생되지않습니다. 자전거의움직임은다른사용자조작을통해서도시작할수있습니다. 예를들어, startbutton 이라는버튼이있는경우, 기본타임라인의키프레임에다음코드를적용하면버튼을클릭해야애니메이션이재생되도록만듭니다. // 버튼을클릭하면이함수가호출됩니다. // 재생할자전거애니메이션입니다. function playanimation(event:mouseevent):void bicycle.play(); // 버튼에함수를리스너로등록합니다. startbutton.addeventlistener(mouseevent.click, playanimation); 464 무비클립을사용한작업

빨리감기및되감기 play() 및 stop() 메서드를사용하는방법외에도무비클립에서재생을제어하는다른방법이있습니다. nextframe() 및 prevframe() 메서드를사용하여재생헤드를타임라인을따라수동으로빨리감거나되감을수도있습니다. 이러한메서드중하나를호출하면재생이중지되고재생헤드가앞으로또는뒤로각각이동합니다. play() 메서드를사용하는것은무비클립객체의 enterframe 이벤트가트리거될때마다 nextframe() 을호출하는것과비슷합니다. 이러한맥락에서, 다음과같이 enterframe 이벤트에대한이벤트리스너를만들고 bicycle이해당리스너함수내의이전프레임으로이동하도록지시하는방법으로 bicycle 무비클립의되감기를실행할수있습니다. // enterframe 이벤트를트리거하면이함수가호출됩니다. // 즉, 프레임마다한번씩함수가호출됩니다. function everyframe(event:event):void if (bicycle.currentframe == 1) bicycle.gotoandstop(bicycle.totalframes); else bicycle.prevframe(); bicycle.addeventlistener(event.enter_frame, everyframe); 일반적으로재생할때무비클립에둘이상의프레임이있는경우이무비클립을재생하면무한정반복됩니다. 즉, 마지막프레임을지나면프레임 1 로돌아옵니다. prevframe() 또는 nextframe() 을사용하면이러한동작이자동으로발생하지않습니다. 다시말해서, 재생헤드가프레임 1 에있을때 prevframe() 을호출해도재생헤드가마지막프레임으로이동하지않습니다. 위예제에서 if 조건은재생헤드가첫번째프레임으로되감기를진행했는지확인하고, 재생헤드를마지막프레임앞에오도록설정하여되감기를실행하는무비클립이효과적으로반복되도록만듭니다. 다른프레임으로이동및프레임레이블사용 새프레임에무비클립을보내는작업은간단합니다. gotoandplay() 또는 gotoandstop() 을호출하면무비클립이매개변수로지정된프레임번호로이동합니다. 또는프레임레이블이름과일치하는문자열을전달할수있습니다. 타임라인의모든프레임에레이블을지정할수있습니다. 그렇게하려면타임라인에서프레임을선택하고속성관리자의 [ 프레임레이블 ] 필드에이름을입력합니다. 무비클립재생제어 465

특히복잡한무비클립을만드는경우에번호대신프레임레이블을사용하는것이좋습니다. 애니메이션의프레임, 레이어및트윈개수가많아지면중요한프레임에대해무비클립비헤이비어의변화를나타내는설명 ( 예 : off, walking 또는 running ) 으로레이블을지정하는것이좋습니다. 레이블이지정된프레임으로가는 ActionScript 호출은특정프레임번호가아닌하나의참조, 즉레이블을가리키므로이렇게하면코드의가독성도향상되고유연성도증가합니다. 나중에애니메이션의특정선분을다른프레임으로이동할경우새위치에서해당프레임의레이블을동일하게유지하는한 ActionScript 코드를변경할필요가없습니다. ActionScript 3.0은프레임레이블을코드로표시할수있도록 FrameLabel 클래스를제공합니다. 이클래스의각인스턴스는단일프레임레이블을나타내며, name 속성 ( 속성관리자에지정된프레임레이블이름을나타냄 ) 및 frame 속성 ( 레이블이배치될타임라인프레임의프레임번호를나타냄 ) 을가지고있습니다. 무비클립인스턴스와연관된 FrameLabel 인스턴스에액세스할수있도록 MovieClip 클래스에는 FrameLabel 객체를직접반환하는두개의속성이포함되어있습니다. currentlabels 속성은무비클립전체타임라인의모든 FrameLabel 객체로이루어진배열을반환합니다. currentlabel 속성은최근에타임라인에나타난 FrameLabel 객체하나를반환합니다. 로봇이라는무비클립을만들었으며애니메이션의여러가지상태에레이블을지정했다고가정할경우다음코드와같이로봇의현재상태에액세스할수있는 currentlabel 속성을확인하는조건을설정할수있습니다. if (robot.currentlabel.name == "walking" // 작업을수행하십시오. 장면을사용한작업 Flash 제작환경에서는 SWF 파일이진행되는타임라인을연속으로보여주는장면을사용할수있습니다. gotoandplay() 또는 gotoandstop() 메서드의두번째매개변수를사용하면재생헤드를보낼수있는장면을지정할수있습니다. 모든 FLA 파일은첫장면으로만시작하지만새장면을만들수도있습니다. 장면에는단점이많으므로장면을사용하는것이항상최선은아닙니다. 여러장면이포함된 Flash 문서는유지관리가어려울수있습니다. 특히제작자가여러명인경우더욱그렇습니다. 제작프로세스동안모든장면을하나의타임라인에병합하므로장면이여러개인경우대역폭이불충분할수도있습니다. 따라서장면이재생된적이없는경우에도모든장면이점진적으로다운로드될수있습니다. 따라서여러타임라인을기반으로하는장편애니메이션을구성하는경우를제외하고는여러장면을사용하지않는것이좋습니다. MovieClip 클래스의 scenes 속성은 SWF 파일에있는모든장면을나타내는 Scene 객체의배열을반환합니다. currentscene 속성은현재재생중인장면을나타내는 Scene 객체를반환합니다. 466 무비클립을사용한작업

Scene 클래스에는장면정보를제공하는여러속성이있습니다. labels 속성은해당장면내의프레임레이블을나타내는 FrameLabel 객체의배열을반환합니다. name 속성은장면의이름을문자열로반환합니다. numframes 속성은장면의전체프레임수를나타내는 int 를반환합니다. ActionScript 를사용하여 MovieClip 객체만들기 Flash에서스크린에내용을추가하는한가지방법은라이브러리의에셋을스테이지로드래그하는것입니다. 그러나이외에다른작업과정도있습니다. 복잡한프로젝트의경우일반적으로숙련된개발자는프로그래밍방식으로무비클립을만드는경우가많습니다. 이러한방식은코드를다시사용하기가쉽고, 컴파일시간속도가빠르며, ActionScript에서만가능한정교한수정작업을수행할수있다는장점이있습니다. ActionScript 3.0의표시목록 API에서는동적으로 MovieClip 객체를만드는프로세스가간편해졌습니다. MovieClip 인스턴스를표시목록에추가하지않고도직접인스턴스화할수있으므로제어기능을그대로유지하면서작업을유연하고간편하게수행할수있습니다. ActionScript 3.0에서프로그래밍방식으로무비클립 ( 또는기타표시객체 ) 인스턴스를만들면, 표시객체컨테이너에서 addchild() 또는 addchildat() 메서드를호출하여만든인스턴스를표시목록에추가해야만스크린에나타납니다. 따라서무비클립을만들어속성을설정하고, 메서드를스크린에렌더링하기전에호출할수있습니다. 표시목록을사용한작업에대한자세한내용은 360페이지의 표시객체컨테이너작업 을참조하십시오. ActionScript 의라이브러리심볼내보내기 기본적으로 Flash 문서의라이브러리에있는무비클립심볼인스턴스는동적으로만들수없습니다. 다시말해서, ActionScript 를이용해서만만들수있습니다. 이는심볼을 ActionScript 에서사용하기위해내보낼때마다 SWF 파일의크기가늘어날뿐아니라일부심볼은스테이지용에서사용할수있도록만들어지지않았기때문입니다. 이러한이유로 ActionScript 에서심볼을사용하려면해당심볼을 ActionScript 용으로내보내도록지정해야만합니다. 심볼을 ActionScript에사용할수있도록내보내려면 : 1. [ 라이브러리 ] 패널에서심볼을선택하고 [ 심볼속성 ] 대화상자를엽니다. 2. 필요한경우 [ 고급설정 ] 을활성화합니다. 3. [ 링크 ] 섹션에서 [ActionScript에내보내기 ] 체크상자를선택합니다. 그러면 [ 클래스 ] 및 [ 기본클래스 ] 필드가활성화됩니다. ActionScript 를사용하여 MovieClip 객체만들기 467

기본적으로 [ 클래스 ] 필드에는공백이제거된심볼이름 ( 예 : 이름이 Tree House 인심볼의경우 TreeHouse ) 이표시됩니다. 심볼이비헤이비어에사용자정의클래스를사용하도록지정하려면이필드에패키지이름을포함한전체클래스이름을입력합니다. 비헤이비어를추가하지않고 ActionScript에심볼의인스턴스를만들려는경우클래스이름을그대로두면됩니다. [ 기본클래스 ] 필드의기본값은 flash.display.movieclip입니다. 심볼이기타사용자정의클래스의기능을확장하도록만들려면, 해당클래스가 Sprite 또는 MovieClip 클래스를확장하는경우클래스의이름을지정할수있습니다. 4. [ 확인 ] 버튼을눌러변경내용을저장합니다. 이때 Flash에서지정된클래스가정의되어있는외부 ActionScript 파일을찾지못하면 ( 예를들어, 심볼에비헤이비어를추가할필요가없는경우 ) 다음과같은경고메시지가표시됩니다. 이클래스의정의는클래스경로에서찾을수없으므로내보낼때 SWF 파일에서자동으로생성됩니다. 라이브러리심볼에 MovieClip 클래스의기능외에고유한기능이필요하지않다면이경고를무시해도됩니다. 사용자가심볼에대한클래스를제공하지않으면 Flash에서다음과같이심볼에대한클래스를만듭니다. package import flash.display.movieclip; public class ExampleMovieClip extends MovieClip public function ExampleMovieClip() 심볼에기타 ActionScript 기능을추가하려면이구조에해당속성과메서드를추가합니다. 예를들어, 폭과높이가각각 50픽셀인원이포함된무비클립심볼이있고, 이름이 Circle인클래스를사용하여심볼을 ActionScript에내보내도록지정했다고가정해봅시다. 다음코드가 Circle.as 파일에배치되면 MovieClip 클래스를확장하고추가메서드 getarea() 및 getcircumference() 가있는심볼을제공합니다. package import flash.display.movieclip; public class Circle extends MovieClip public function Circle() 468 무비클립을사용한작업

public function getarea():number // 수식은 Pi x R- 제곱입니다. return Math.PI * Math.pow((width / 2), 2); public function getcircumference():number // 수식은 Pi x 지름입니다. return Math.PI * width; 다음코드가 Flash 문서프레임 1의키프레임에배치되면심볼의인스턴스를만들어스크린에표시합니다. var c:circle = new Circle(); addchild(c); trace(c.width); trace(c.height); trace(c.getarea()); trace(c.getcircumference()); 이코드는개별에셋을스테이지로드래그하는대안으로 ActionScript 기반인스턴스화를보여줍니다. 무비클립의모든속성과 Circle 클래스에서정의한사용자정의메서드가있는원이만들어집니다. 이것은매우기본적인예로서, 라이브러리심볼은클래스에서원하는수만큼속성과메서드를지정할수있습니다. ActionScript 기반인스턴스화는수동으로정렬하기에는지루한대량의인스턴스를동적으로만들수있으므로강력합니다. 또한각인스턴스를만들때해당속성을사용자정의할수있으므로유연합니다. 루프를사용하여여러 Circle 인스턴스를동적으로만들면이러한장점을모두이용할수있습니다. 앞서설명한 Flash 문서라이브러리의 Circle 심볼및클래스를사용하여프레임 1의키프레임에다음코드를배치합니다. import flash.geom.colortransform; var totalcircles:uint = 10; var i:uint; for (i = 0; i < totalcircles; i++) // 새 Circle 인스턴스를만듭니다. var c:circle = new Circle(); // x 좌표에새 Circle 을배치합니다. 이 x 좌표를기준으로스테이지 // 전체에원이고른간격으로배치됩니다. c.x = (stage.stagewidth / totalcircles) * i; // 스테이지의세로중심에 Circle 인스턴스를배치합니다. ActionScript 를사용하여 MovieClip 객체만들기 469

c.y = stage.stageheight / 2; // Circle 인스턴스를임의의색상으로변경합니다. c.transform.colortransform = getrandomcolor(); // 현재타임라인에 Circle 인스턴스를추가합니다. addchild(c); function getrandomcolor():colortransform // 빨강, 녹색및파랑색상채널에대한임의의값을생성합니다. var red:number = (Math.random() * 512) - 255; var green:number = (Math.random() * 512) - 255; var blue:number = (Math.random() * 512) - 255; // 임의의색상으로 ColorTransform 객체를만들어서반환합니다. return new ColorTransform(1, 1, 1, 1, red, green, blue, 0); 이예는코드를사용하여심볼에대한여러개의인스턴스를빨리만들고사용자정의할수있는방법을보여줍니다. 루프내에있는현재개수에따라각인스턴스가배치되고, transform 속성 (Circle 이 MovieClip 클래스를확장하여상속함 ) 을설정하여각인스턴스에임의의색이지정됩니다. 외부 SWF 파일로드 ActionScript 3.0에서 SWF 파일은 Loader 클래스를사용하여로드됩니다. 외부 SWF 파일을로드하려면 ActionScript에서는다음네가지를수행합니다. 1. 파일의 URL을사용하여새 URLRequest 객체를만듭니다. 2. 새 Loader 객체를만듭니다. 3. 이 Loader 객체의 load() 메서드를호출하여 URLRequest 인스턴스를매개변수로전달합니다. 4. 표시객체컨테이너 ( 예 : Flash 문서의기본타임라인 ) 의 addchild() 메서드를호출하여 Loader 인스턴스를표시목록에추가합니다. 완성된코드는다음과같습니다. var request:urlrequest = new URLRequest( http://www.[yourdomain].com/ externalswf.swf ); var loader:loader = new Loader() loader.load(request); addchild(loader); 470 무비클립을사용한작업

위와동일한코드를사용하여 JPEG, GIF, PNG 이미지등의외부이미지파일을로드할수있습니다. 이때 SWF 파일 URL 이아니라해당이미지파일의 URL 을지정합니다. SWF 파일은이미지파일과달리 ActionScript 를포함할수있습니다. SWF 파일로드프로세스와이미지로드가동일하지만, ActionScript 를사용하여외부 SWF 파일과통신하려면외부 SWF 파일로드시로드하는 SWF 파일과로드되는 SWF 파일이모두동일한보안샌드박스에있어야합니다. 또한외부 SWF 파일의클래스네임스페이스가로드하는 SWF 파일의클래스네임스페이스와동일한경우네임스페이스의충돌을방지하기위해로드되는 SWF 파일에대한새응용프로그램도메인을만들어야할수도있습니다. 보안및응용프로그램도메인에대한자세한내용은 656 페이지의 ApplicationDomain 클래스사용 및 725 페이지의 SWF 파일및이미지로드 를참조하십시오. 외부 SWF 파일이성공적으로로드되면 Loader.content 속성을통해액세스할수있습니다. 외부 SWF 파일이 ActionScript 3.0 용으로제작된경우이파일은확장하는클래스에따라무비클립이나스프라이트중하나가됩니다. 이전 SWF 파일을로드할때고려할사항 이전버전의 ActionScript를사용하여외부 SWF 파일을제작한경우고려해야할중요한제한사항이있습니다. AVM2(ActionScript Virtual Machine 2) 에서실행되는 ActionScript 3.0 SWF 파일과는달리 ActionScript 1.0 또는 2.0용으로제작된 SWF 파일은 AVM1(ActionScript Virtual Machine 1) 에서실행됩니다. AVM1 SWF 파일이로드되면로드된객체 (Loader.content 속성 ) 는 AVM1Movie 객체가됩니다. AVM1Movie 인스턴스는 MovieClip 인스턴스와동일하지않습니다. 표시객체이지만무비클립과달리타임라인관련메서드나속성이없습니다. 부모파일인 AVM2 SWF는로드된 AVM1Movie 객체의속성, 메서드또는객체에대한액세스권한이없습니다. AVM2 SWF 파일에의해로드된 AVM1 SWF 파일에는추가제한사항이있습니다. 자세한내용은 ActionScript 3.0 언어및구성요소참조설명서에서 AVM1Movie 클래스샘플을참조하십시오. 외부 SWF 파일로드 471

예제 : RuntimeAssetsExplorer [ActionScript에내보내기 ] 기능은둘이상의프로젝트에유용하게사용할수있는라이브러리의경우특히장점이많습니다. ActionScript로내보낸심볼은해당 SWF 파일에서만이아니라이것을로드하는동일한보안샌드박스내의모든 SWF 파일에사용할수있습니다. 이런방식으로하나의 Flash 문서는그래픽에셋을보유하기위한용도로만지정된 SWF 파일을생성할수있습니다. 이기술은 래터 SWF 파일을만든다음런타임시그래픽에셋 SWF 파일을로드하는개발자와디자이너가함께시각적에셋을사용하는큰프로젝트에특히유용합니다. 이메서드를사용하여일련의버전관리된파일을유지관리할수있습니다. 이러한파일에서는그래픽에셋이프로그래밍개발과정의영향을받지않습니다. RuntimeAssetsExplorer 응용프로그램은 RuntimeAsset의하위클래스인모든 SWF 파일을로드하며해당 SWF 파일의사용가능한에셋을찾아볼수있습니다. 다음은이러한경우에대한예제입니다. Loader.load() 를사용하여외부 SWF 파일로드 ActionScript에내보낸라이브러리심볼을동적으로만들기 MovieClip 재생의 ActionScript 컨트롤시작하기전에각 SWF 파일을동일한보안샌드박스에반드시배치하십시오. 자세한내용은 719페이지의 보안샌드박스 를참조하십시오. 이샘플에대한응용프로그램파일을가져오려면 www.adobe.com/go/ learn_programmingas3samples_flash_kr 을참조하십시오. RuntimeAssetsExplorer 응용프로그램파일은 Samples/RuntimeAssetsExplorer 폴더에있습니다. 이응용프로그램은다음과같은파일로구성됩니다. 파일 RuntimeAssetsExample.mxml 또는 RuntimeAssetsExample.fla GeometricAssets.as GeometricAssets.fla com/example/programmingas3/ runtimeassetsexplorer/ RuntimeLibrary.as 설명 Flex(MXML) 또는 Flash(FLA) 용응용프로그램의사용자인터페이스입니다. RuntimeAsset 인터페이스를구현하는클래스에대한예제입니다. ActionScript 용으로내보내진심볼을포함한 GeometricAssets 클래스 (FLA 의문서클래스 ) 에연결된 FLA 파일입니다. 탐색기컨테이너로로드될모든런타임에셋 SWF 파일을반환할필수메서드를정의하는인터페이스입니다. 472 무비클립을사용한작업

파일 com/example/programmingas3/ runtimeassetsexplorer/animatingbox.as com/example/programmingas3/ runtimeassetsexplorer/animatingstar.as 설명 회전상자모양에있는라이브러리심볼의클래스입니다. 회전별모양에있는라이브러리심볼의클래스입니다. 런타임라이브러리인터페이스구축 탐색기가 SWF 라이브러리와적절히상호작용하려면런타임에셋라이브러리의구조를정형화해야합니다. 이러한구조는예상구조를보여주는메서드의청사진이라는점에서클래스와유사하지만클래스와는다르게메서드본문이포함되지않은인터페이스를만들어정형화할수있습니다. 이인터페이스는런타임라이브러리와탐색기모두에서로통신할수있는방법을제공합니다. 브라우저에로드되는런타임에셋의각 SWF는이인터페이스를구현합니다. 인터페이스및그활용에대한자세한정보는 150페이지의 인터페이스 를참조하십시오. RuntimeLibrary 인터페이스는매우간단합니다. 심볼을내보내고런타임라이브러리에서사용할수있는클래스경로배열을탐색기에제공할수있는함수만있으면됩니다. 이작업을수행할수있도록인터페이스에 getassets() 라는메서드하나가있습니다. package com.example.programmingas3.runtimeassetexplorer public interface RuntimeLibrary function getassets():array; 에셋라이브러리 SWF 파일만들기 RuntimeLibrary 인터페이스를정의하여다른 SWF 파일로로드할수있는여러에셋라이브러리 SWF 파일을만들수있습니다. 에셋의개별 SWF 라이브러리를만들려면다음네가지작업을수행해야합니다. 에셋라이브러리 SWF 파일의클래스만들기 라이브러리에포함된개별에셋의클래스만들기 실제그래픽에셋만들기 그래픽요소를클래스와연결하고라이브러리 SWF 제작 예제 : RuntimeAssetsExplorer 473

RuntimeLibrary 인터페이스구현을위한클래스만들기 다음으로 RuntimeLibrary 인터페이스를구현할 GeometricAssets 클래스를만듭니다. 이클래스가 FLA의문서클래스가되며이클래스의코드는 RuntimeLibrary 인터페이스와매우유사합니다. 단, 클래스정의에는 getassets() 메서드에메서드본문이있다는점이다릅니다. package import flash.display.sprite; import com.example.programmingas3.runtimeassetexplorer.runtimelibrary; public class GeometricAssets extends Sprite implements RuntimeLibrary public function GeometricAssets() public function getassets():array return [ "com.example.programmingas3.runtimeassetexplorer.animatingbox", "com.example.programmingas3.runtimeassetexplorer.animatingstar" ]; 두번째런타임라이브러리를만들려는경우자체 getassets() 구현을제공하는다른클래스 ( 예 : AnimationAssets) 를기초로다른 FLA 를만들수있습니다. 각 MovieClip 에셋의클래스만들기 이예제에서는사용자정의에셋에기능을추가하지않고 MovieClip 클래스만확장할것입니다. AnimatingStar에대한다음코드는 AnimatingBox에대한코드와비슷합니다. package com.example.programmingas3.runtimeassetexplorer import flash.display.movieclip; public class AnimatingStar extends MovieClip public function AnimatingStar() 474 무비클립을사용한작업

라이브러리제작 이제새 FLA를만들고속성관리자의 [ 문서클래스 ] 필드에 GeometricAssets를입력하여 MovieClip 기반에셋을새로운클래스에연결합니다. 이에대한예를들기위해 360개가넘는프레임에하나의시계방향회전을만들기위해타임라인트윈을사용하는매우기본적인모양두개를만들것입니다. animatingbox 및 animatingstar 심볼은모두 [ActionScript에내보내기 ] 로설정되고 [ 클래스 ] 필드는 getassets() 구현에지정된각각의클래스경로로설정됩니다. 표준 MovieClip 메서드를하위클래스로사용하려고하면 flash.display.movieclip 의기본클래스가그대로유지됩니다. 심볼의내보내기설정을설정한다음 FLA를제작합니다. 이제첫번째런타임라이브러리가만들어집니다. 이 SWF 파일은다른 AVM2 SWF 파일에로드될수있으며새 SWF 파일에대해 AnimatingBox 및 AnimatingStar 심볼을사용할수있습니다. 다른 SWF 파일로라이브러리로드 마지막으로설명할기능은에셋탐색기의사용자인터페이스입니다. 이예제에서런타임라이브러리경로는 ASSETS_PATH 라는변수로하드코딩되어있습니다. FileReference 클래스를사용할수도있습니다. 예를들어, 하드드라이브에서특정 SWF 파일을탐색하는인터페이스를만들려는경우에 FileReference 클래스를사용합니다. 런타임라이브러리가성공적으로로드되면 Flash Player는 runtimeassetsloadcomplete() 메서드를호출합니다. private function runtimeassetsloadcomplete(event:event):void var rl:* = event.target.content; var assetlist:array = rl.getassets(); populatedropdown(assetlist); stage.framerate = 60; 이메서드에서변수 rl은로드된 SWF 파일을나타냅니다. 코드는로드된 SWF 파일의 getassets() 메서드를호출하고사용가능한에셋목록을가져온다음, 이에셋을사용하여 populatedropdown() 메서드호출로사용가능한에셋목록을 ComboBox 구성요소에채웁니다. 그리고해당메서드는각에셋의전체클래스경로를저장합니다. 사용자인터페이스에서 [ 추가 ] 버튼을클릭하면 addasset() 메서드가트리거됩니다. private function addasset():void var classname:string = assetnamecbo.selecteditem.data; var AssetClass:Class = getdefinitionbyname(classname) as Class; var mc:movieclip = new AssetClass();... 예제 : RuntimeAssetsExplorer 475

이메서드는 ComboBox 에현재선택되어있는에셋의클래스경로를가져오고 (assetnamecbo.selecteditem.data), flash.utils 패키지의 getdefinitionbyname() 함수를사용하여에셋의클래스에대한실제참조를가져와에셋의새인스턴스를만듭니다. 476 무비클립을사용한작업