프리랜서 웹디자이너 웹퍼블리셔RELATION

RELATION 로고

홈페이지 소스

[AS] 무비클립 액션 (onClipEvent 핸들러)

2007.02.02
북마크 작성자 정보
무비클립 액션 (onClipEvent 핸들러)

■ Note

  • 액션스크립트는 버튼, 프레임, 무비클립에 적을 수 있다.
  • 버튼에 액션을 적을 때는 항상 on 이벤트 핸들러 속에 넣어야 하고, 무비클립은 onClipEvent 핸들러 속에 넣어야 한다.
  • 프레임에 액션스크립트가 만들어져 있을 경우, 플레이 헤드가 프레임으로 이동하면 액션스크립트를 먼저 실행한 다음, 그 프레임에 있는 오브젝트들이 표시된다.
  • enterFrame 은 플레이 헤드가 프레임으로 들어갈 때 마다 중괄호 안에 있는 액션스크립트를 실행하라는 의미를 가진다.
  • 오직 한번만 해야 할 작업은 load 이벤트에 적어주고, 계속 반복해야 할 일들은 enterFrame 이벤트에 적어준다.
  • 무비클립 액션의 기본 형태 onClipEvent(이벤트) { 실행될 액션스크립트 }
  • onClipEvent 를 실행시키는 이벤트 9가지
    Event Note
    load 무비클립이 처음 실행될 때 발생하는 이벤트
    무비클립이 로드되거나 무비클립이 있는 프레임으로 플레이 헤드가 이동할 때 발생
    무비클립의 초기화에 관련된 부분이나, 메서드를 정의할 때 사용
    unload 무비클립이 타임라인에서 제거된 다음 첫 번째 프레임에서 발생하는 이벤트
    unload 이벤트와 관계된 액션들은 해당하는 프레임에 있는 어떤 액션들보다 먼저 실행된다.
    enterFrame 매 프레임마다 발생하는 이벤트
    enterFrame 과 관계된 액션들은 해당 프레임에 있는 다른 액션들이 모두 실행된 다음 실행된다.
    Movie의 초당 프레임 속도 (fps: frmaes per second) 가 12로 설정되면 1초에 12번 실행
    액션스크립트가 매우 복잡하고 fps 를 높게 설정하면 조금 느려질 수 있다.
    mouseMove 마우스가 움직일 때마다 발생하는 이벤트
    마우스 움직임에 반응하는 무비클립을 만들 때 enterFrame 이벤트보다 mouseMove 이벤트를 사용한는게 컴퓨터의 부하를 덜어준다.
    _xmouse, _ymouse 속성을 이용하면, 현재 마우스의 위치를 알아낼 수 있다.
    mouseDown 마우스의 왼쪽 버튼이 눌러질 때 발생하는 이벤트
    mouseUp 마우스의 왼쪽 버튼을 눌렀다가 놓을 때 발생하는 이벤트
    keyDown 키보드를 누를 때 발생하는 이벤트.
    Key.getCode 메서드를 이용하면, 마지막으로 누른 키보드의 정보를 얻어올 수 있다.
    keyUp 키보드를 눌렀다가 놓을 때 발생하는 이벤트.
    Key.getCode 메서드를 이용하면, 마지막으로 누른 키보드의 정보를 얻어올 수 있다.
    Data loadMovie 나 lodeVariable 액션을 통해 data를 받을 때 발생하는 이벤트.
    loadVariable 액션을 사용할 경우, data 이벤트는 마지막 변수가 불려질 때 한번만 실행되고,
    loadMovie 액션을 사용할 경우, 데이터의 일부분이 불려질 때마다 반복적으로 data 이벤트가 발생한다.

  • 변수
    변수는 어떤 값을 담아두기 위한 그릇
    변수이름으로 가능한 예 : speedX, _speed, apple, apple3, rdy, isOpen
    변수이름으로 불가능한 예 : _x, _y, if, 1speed (예약어 및 숫자로 시작하는 변수명은 사용이 불가능하다.)

    ■ Action Script Sample

    무비클립에 아래과 같은 액션스크립트를 사용함으로써 수백 개의 프레임을 대신할 수 있다.
    물론 파일 사이즈도 훨씬 감소한다.
    onClipEvent(load){ speed = 2; }
    onClipEvent(enterFrame){ this._x = this._x + speed; }
    화면에서 사라지지 않게 화면 끝으로 가면 방향을 바꾼다.

    onClipEvent(load){ speed = 2; }
    onClipEvent(enterFrame){
    this._x = this._x + speed;
    if (this._x > 500 || this._x < 50) {
    speed = -1*speed; this._xscale = -1 * this,_xscale;
    } }
  • 이 포스트 공유하기

    전체목록