지금까지 제작한 무비는 액션스크립트를 버튼이나 프레임에 적었습니다. 하지만 무비클립에도 액션스크립트를 적을 수 있습니다. 버튼에 액션을 적을 경우 항상 on 핸들러 속에 넣어야 하고, 무비클립에 액션을 적을 경우 항상 onClipEvent 핸들러 속에 넣어야 합니다. onClipEvent 핸들러가 다루는 이벤트는 ‘load', 'enterframe', 'mouseMove', 'keyDown'등이 있습니다.
onClipEvent(이벤트)
실행할 액션스크립트
}
실행할 액션스크립트
}
① 이벤트 종류
매서드 | 설명 |
load | 무비클립이 처음 실행될 때 발생하는 이벤트입니다. 즉, 무비클립이 로드되거나 무비클립이 있는 프레임으로 플레이 헤드가 이동할 때 발생합니다. 무비클립의 초기화에 관련된 부분이나, 메서드를 정의할 때는 load 이벤트를 사용합니다. |
unload | 무비클립이 타임라인에서 제거된 다음 첫 번째 프레임에서 발생하는 이벤트입니다. unload 이벤트와 관계된 액션들은 해당하는 프레임에 있는 어떤 액션들보다 먼저 실행됩니다. |
enterFrame | 매 프레임마다 발생하는 이벤트입니다. enterFrame과 관계된 액션들은 해당하는 프레임에 있는 다른 액션들이 모두 실행된 다음 실행됩니다. Movie의 초당 프레임 속도가 12로 설정되면 1초에 12번 실행되고 24로 설정되면 1초에 24번 실행됩니다. |
mouseMove | 마우스가 움직일 때마다 발생하는 이벤트입니다. 마우스의 움직임에 반응하는 무비클립을 만들 때는 enterFrame 이벤트보다 mouseMove 이벤트를 사용하는 것이 컴퓨터의 부하를 덜어줍니다. |
mouseDown | 마우스의 왼쪽 버튼이 눌러질 때 발생하는 이벤트입니다. |
mouseUp | 마우스의 왼쪽 버튼을 눌렀다가 놓을 때 발생하는 이벤트입니다. |
keyDown | 키보드를 누를 때 발생하는 이벤트입니다. key.getCode 메서드를 이용하면, 마지막으로 누른 키보드의 정보를 얻어올 수 있습니다. |
keyUp | 키보드를 눌렀다가 놓을 때 발생하는 이벤트입니다. 물론 key.getCode 메서드를 이용하면, 마지막으로 누른 키보드의 정보를 얻어올 수 있습니다. |
Data | loadMovie나 loadVariable 액션을 통해 data를 받을 때 발생하는 이벤트입니다. loadVariable 액션을 사용할 경우에는, 데이터 일부분이 호출될 때마다 반복적으로 data 이벤트가 발생합니다. |
<예>
onClipEvent(load){
_root.car._x = 100;
_root.car._y = 100;
}
_root.car._x = 100;
_root.car._y = 100;
}
load 이벤트를 사용하여 처음 시작할 때 x 및 y의 위치를 모두 100으로 위치하도록 설정하였습니다.
onClipEvent(enterFrame){
_root.car._x = _root.car._x +2;
}
_root.car._x = _root.car._x +2;
}
위 소스는 매 프레임마다 x의 위치를 2만큼씩 증가하도록 입력하였습니다.
여기에서 enterFrame을 사용한 이유를 아시겠죠?
② load 이벤트에 speed라는 변수 설정하기
onClipEvent(load){
speed = 2;
}
onClipEvent(enterFrame){
this._x = this._x + speed;
}
speed = 2;
}
onClipEvent(enterFrame){
this._x = this._x + speed;
}
위 액션스크립트는 “무비가 시작할 때(load 이벤트) speed라는 변수에 2를 대입하고, 매 프레임마다 speed 만큼씩 자신의 x 좌표를 이동시키라”는 뜻입니다.
여기에서 this가 나오죠? this는 자신 또는 무비클립 이라고만 생각해두시면 됩니다.
여기에서 아주 중요한 부분이 있습니다. 바로 “변수”입니다.
변수란, 말 그대로 변할 수 있는 값을 가진다는 뜻입니다. 즉 변수를 정하고 변수에 값을 지정해 놓은 후에 그 변수를 꺼내서 사용할 수 있습니다.
여기에서 주의할 점은 변수이름은 플래시에서 미리 정한 예약어를 제외한 다른 이름을 적어야 하고 변수의 첫 글자는 숫자나 특수문자로 시작하면 안 됩니다.
speedX, speedY 는 변수의 이름으로 가능하며 _x, _y, if, 1speed 등은 변수의 이름으로 불가능합니다. 여기에서 1speed가 변수의 이름으로 안 되는 이유는 아시겠죠?
여기에서 this가 나오죠? this는 자신 또는 무비클립 이라고만 생각해두시면 됩니다.
여기에서 아주 중요한 부분이 있습니다. 바로 “변수”입니다.
변수란, 말 그대로 변할 수 있는 값을 가진다는 뜻입니다. 즉 변수를 정하고 변수에 값을 지정해 놓은 후에 그 변수를 꺼내서 사용할 수 있습니다.
여기에서 주의할 점은 변수이름은 플래시에서 미리 정한 예약어를 제외한 다른 이름을 적어야 하고 변수의 첫 글자는 숫자나 특수문자로 시작하면 안 됩니다.
speedX, speedY 는 변수의 이름으로 가능하며 _x, _y, if, 1speed 등은 변수의 이름으로 불가능합니다. 여기에서 1speed가 변수의 이름으로 안 되는 이유는 아시겠죠?
onClipEvent(load){
speed = 2;
onClipEvent(enterFrame){
this._x = this._x + speed;
}
speed = 2;
onClipEvent(enterFrame){
this._x = this._x + speed;
}
* 알아주기
플래시를 처음 다루는 분들은 load, 이벤트, enterFrame 등이 어렵게 느껴질 수도 있습니다. 이벤트란 쉽게말해'사건'이라는 뜻입니다. 예를 들어 사람을 하나의 무비클립으로 간주하고 사람의 일생을 이벤트에 맞춰 살펴봅시다.사람이 태어나는 사건은 오직 한 번만 발생하고 태어나면서 이름, 성별 등은 한 번만 설정됩니다.(도중에 이름을 바꾸는 경우는 제외) 반면 사람이 숨을 쉬는 일은 매 초마다 이루어져야 하고 밥을 먹는 일은 하루에 세 번씩, 잠은 하루에 한 번씩 이루어져야 합니다. 그리고 걸어갈 때는 매 순간마다 다리를 앞으로 뻗어야 하고 밥을 먹을 때는 밥을 퍼야합니다. 플래시도 우리의 일상생활과 동일하다고 생각하면 됩니다.예를 들어 태어나는 일과 같이 오직 한 번만 해야 할 작업은 load 이벤트에 적어주고, 숨을 쉬는 일처럼 계속 반복되는 일은 enterFrame 이벤트에 적어서 매 프레임마다 반복시켜주면 됩니다.
플래시를 처음 다루는 분들은 load, 이벤트, enterFrame 등이 어렵게 느껴질 수도 있습니다. 이벤트란 쉽게말해'사건'이라는 뜻입니다. 예를 들어 사람을 하나의 무비클립으로 간주하고 사람의 일생을 이벤트에 맞춰 살펴봅시다.사람이 태어나는 사건은 오직 한 번만 발생하고 태어나면서 이름, 성별 등은 한 번만 설정됩니다.(도중에 이름을 바꾸는 경우는 제외) 반면 사람이 숨을 쉬는 일은 매 초마다 이루어져야 하고 밥을 먹는 일은 하루에 세 번씩, 잠은 하루에 한 번씩 이루어져야 합니다. 그리고 걸어갈 때는 매 순간마다 다리를 앞으로 뻗어야 하고 밥을 먹을 때는 밥을 퍼야합니다. 플래시도 우리의 일상생활과 동일하다고 생각하면 됩니다.예를 들어 태어나는 일과 같이 오직 한 번만 해야 할 작업은 load 이벤트에 적어주고, 숨을 쉬는 일처럼 계속 반복되는 일은 enterFrame 이벤트에 적어서 매 프레임마다 반복시켜주면 됩니다.