본문 바로가기

Flash/ActionScript 3.0

[MissFlash의 ActionScript 3.0] 1.3 Where to Place ActionScript Code

* 본 포스트는 "Joey Lott의 ActionScript 3.0 Cookbook"의 내용을 정리, 가공한 것입니다.
* 본 포스트를 퍼가실 때는 상단에 아래와 같이 원본출처를 명시해 주세요! ^^
원본 : http://blog.missflash.com/
출처 : MissFlash.com, http ://www.missflash.com/
* 포스트의 내용중 일부가 추가/수정될 수 있으므로 최신 내용을 접하고 싶으신 분은 원본글을 이용하시기 바랍니다.

1.3 Where to Place ActionScript Code

Problem
ActionScript project를 새롭게 시작하고 나서 이것을 실행하기 위해 어디에 ActionScript 코드를 붙여야 할지 궁금할 때

Solution
ActionScript 코드를 constructor와 클래스의 추가 메소드에 붙입니다.

Discussion
ActionScript 1.0과 2.0에서는 다음과 같은 곳에 ActionScript 코드를 넣을 수 있었습니다.
- 타임라인
- 버튼과 무비클립
- 무비클립의 타임라인
- #include를 이용한 외부 ActionScript 파일 (.as)
- #include를 이용한 외부 클래스 파일

ActionScript 3.0은 클래스 베이스이므로 모든 코드는 ActionScript project의 클래스 내에 위치해야 합니다.
처음 ActionScript project를 시작하면 다음과 같은 클래스 파일이 자동으로 생성됩니다. 아래 코드에서 Flex_MF가 사용자가 설정한 클래스명입니다.

package {
 import flash.display.Sprite;
 public class Flex_MF extends Sprite
 {
  public function Flex_MF()
  {
  }
 }
}


1) package

위 코드에서 제일 먼저 봐야할 부분은 package입니다. ActionScript 3.0에서 package는 관련있는 기능의 클래스들을 하나로 묶어주는 기능을 합니다. package는 필수적으로 들어가야 하며, package missflash.utils { 과 같이 이름을 넣지 않을 경우 자동으로 top-level의 package로 설정됩니다.

2) import
다음은 import문이 보이는군요. import는 이미 작성해놓은 클래스 파일을 불러올 때 사용할 수 있습니다. 따라서 이후에는 full package 이름을 쓸 필요가 없습니다. 위 예에서는 flash.display.Sprite라는 클래스를 import했습니다.

3) main class
다음은 Flex_MF로 표시된 메인 클래스입니다. 메인 클래스 뒤에 extends Sprite라는 부분이 보이는군요. swf 파일이 sprite 혹은 무비클립의 일종이므로 Sprite를 extends하였습니다.

4) public function
마지막으로 클래스명과 동일한 public function이 있습니다. 이것이 constructor를 만드는데, constructor는 클래스의 인스턴스가 만들어지는 동시에 실행됩니다. 위 예의 경우, swf 파일이 플래시 플레이어에 로드되는 순간에 constructor가 실행됩니다.

따라서! 이 실행을 원하는 ActionScript 코드가 있다면, 이것을 constructor 메소드안에 넣으면 됩니다.
랜덤한 선을 그려주는 함수를 constructor안에 넣어보겠습니다.

package {
 import flash.display.Sprite;
 public class Flex_MF extends Sprite
 {
  public function Flex_MF()
  {
    graphics.lineStyle(1,1,1);
    for(var i:int=0;i<10;i++){
     graphics.lineTo(Math.random()*100, Math.random()*100);
    }
  }
 }
}


* 용어설명
① Variables (변수)
- 정보를 담아두는 공간
- 변수는 최초 var 라는 명령어를 통해 선언 되어야 합니다.
- 변수가 클래스 밖에서 선언되면 이것은 클래스 변수가 됩니다.
- 클래스 변수 (혹은 속성-properties)은 public, private, protected, internal과 같은 access modifiers를 가집니다.
- public 변수가 다른 클래스의 objects를 통해서 접근할 수 있는 반면, private 변수는 같은 클래스내에서만 접근할 수 있습니다.
- protected 변수는 클래스나 서브클래스의 인스턴스로부터 접근할 수 있습니다.
- internal 변수는 같은 package내의 어떤 클래스에서도 접근할 수 있습니다.
- access modifier를 설정하지 않으면 기본적으로 internal 변수가 됩니다.

② Functions (함수)
- 어떤 것을 수행하기 위한 코드의 블럭
- 함수의 클래스의 일부로써, 클래스의 메소드라고 불리기도 합니다.
- 함수의 access modifiers는 properties와 동일합니다.

③ Scope (범위)
- 변수의 scope은 변수의 life span(소멸시기)나 접근성 등을 정의하는 것입니다.
- 함수의 scope은 어디에서부터 혹은 언제부터 함수를 사용할 수 있는지를 정의하는 것입니다.

④ Event handler (이벤트 핸들러)
- 이벤트 핸들러는 마우스 클릭이나 키 누름, 타임라인의 이동 등의 이벤트 발생시 실행되는 함수 혹은 메소드입니다.

⑤ Objects and classes (오브젝트와 클래스)
- 오브젝트는 Sprite와 같이 ActionScript를 통해 제어할 수 있는 것을 뜻합니다.
- 오브젝트는 클래스의 인스턴스입니다.

⑥ Methods (메소드)
- 메소드는 오브젝트를 조정하는 것과 관련된 함수입니다.

⑦ Properties (속성)
- 속성은 읽고 설정할 수 있는 오브젝트의 특성입니다.

⑧ Statements (구문)
- ActionScript 명령문은 하나이상의 Statements로 구성되어 있습니다.
- 대부분의 Statements는 세미콜론(;)으로 끝납니다.

⑨ Comments (주석)
- 주석은 플래시는 인식하지 못하는 것으로 코드에 대한 부가적인 설명을 위해 많이 이용됩니다.
- 한줄의 주석을 달기 위해서는 // 를 이용합니다.
- 두 줄 이상의 주석을 달기 위해서는 주석의 제일 앞에 /* 를, 주석의 제일 끝에 */ 를 추가합니다.

⑩ Interpreter (인터프리터)
- ActionScript의 인터프리터는 코드를 검사하고 이해하며 이를 실행하는 플래시 플레이어의 일부입니다.

See Also
Recipes 1.13, 1.14