강좌 모음/플래시(Flash) 강좌

4-03. 콜백 함수의 이해

리치샘 2016. 6. 28. 15:54

제4장 예제를 이용한 애니메이션 만들기

4-03. 콜백 함수의 이해


    이제 플래시의 액션은 크게 버전 2와 3이 있습니다. 이전의 MX버전부터 콜백 함수라는 것이 도입이 되고, 버전 3은 이전의 2버전과는 구조가 많이 다른 새로운 액션과 스크립트가 도입되었습니다.

    콜백 함수를 이용하면 일명 '원(One)프레임 무비' 혹은 '스크립트 모션(Script Motion)'이라 불리우는 1개의 프레임을 이용한 애니메이션 및 상호작용을 구현할 수 있습니다. 이로써 플래시를 단순한 애니메이션 제작도구에서 프로그래밍 언어에 가깝도록 프로그램의 성격을 바꿔놓았고,  액션스크립트 3.0으로 이어지게 됩니다.

    여기에서 다룰 액션 스크립트는 1개의 프레임에서 구현하는 것을 원칙으로 하겠습니다.


    가. 콜백 함수와 인스턴스 이름

    액션스크립트를 적용할 수 있는 곳은 버튼과 무비 클립, 키프레임입니다.

    콜 백(Call back) 함수는 프레임에서 스테이지 안의 버튼이나 무비클립, 텍스트 박스를 제어할 수 있습니다.
    콜백 함수는 보통은 타임라인의 1프레임에서 기술하게 됩니다.

    심볼을 스테이지에 가져다 놓으면 그것은 인스턴스가 됩니다. 앞서의 강좌에서 설명 드린 바와 같이 심볼이라는 오브젝트는 스테이지에서 심볼 속성 뿐만 아니라, 매서드도 각각 다른 형태로 가질 수 있습니다.
    바꾸어 말하면 하나의 오브젝트는 스테이지에서 여러 가지의 변신을 할 수 있게 되는데, 이 경우를 인스턴스(Instance)라고 하고, 인스턴스는 반드시 인스턴스 이름(Instance Name)을 가지고 있어야 합니다.
    인스턴스는 그 이름을 가지게 되면 액션스크립트의 대상이 되어 실행, 연산 등 다양한 행동(Method, 메서드)을 행하게 됩니다.


    나. 권장하지 않는 액션스크립트

    다음 목록은 플래시 5버전까지 많이 이용되던 스크립트입니다만 플래시 MX부터는 권장하지 않는 것들입니다.

    그러면 이를 대체할 방법은 어떤 것일까요?

    여기에 열거되어 있는 스크립트를 대신할 스크립트는 무엇일까 하지 말고, 앞서 말씀드린대로, 새 술을 새 부대에 담는다는 생각으로 개념을 재정립할 필요가 있다는 말씀을 드리고 싶습니다.

    특히 TellTarget 같은 경우는 매우 많이 사용되던 명령입니다.
    이 명령은 도트 구문을 사용하면 매우 간단하게 구현할 수 있습니다.

     

    다. 도트 구문

    이를테면 달리는 사람의 모습이 들어 있는 무비클립을 스테이지에 가져다놓고, 인스턴스 이름을 '사람'이라고 합시다. 이 '사람을' 멈추게 하자면 다음과 같이 명령을 주면 되는 거지요.

    _root.사람.stop();

    다시 달리게 하고 싶으면

    _root.사람.play();

    이와 같은 명령 방식을 도트 구문이라고 합니다.

    이 때의 도트(.)는 '~의, ~에 속한'이라는 의미를 가집니다.
    '_root'는 인스턴스가 있는 경로를(root는 뿌리-윈도 탐색기와 같은 구조로 생각하면 됩니다), '사람'은 인스턴스 이름이고, Stop(), Play()는 메서드에 해당됩니다.
    그러니까 우리가 일상생활에서 행동을 지시하는 말을 할 때와 같은 방식임을 알 수 있습니다.

     

    아래의 예제는 Run 버튼에 그림과 같은 구문이 들어있습니다.

    [예제 파일] 

    runwoman.fla

    인스턴스 이름을 비롯한, 경로 설정 방법, 매서드 및 매서드 말미에 붙는 매개 변수 등에 관해서는 다음에 더 상세하게 살펴보겠습니다.


라. 인스턴스 이름(Instance Name)이 반드시 필요하다

    예를 들어 동생이 텔레비젼을 보고 있는데 채널을 돌려라는 뜻으로 '돌려'라는 명령을 주면 동생은 고개를 돌려야할 지, 팔을 돌려야할 지 모르게 됩니다. 이런 오해를 막기 위해서는 행동의 주체와 행동의 방식을 정확히 지시해줄 필요가 있습니다.
    즉, 'TV 채널을 9번으로 돌려!'가 가장 정확한 명령이 될 것입니다.

    플래시의 액션 스크립트도 이와 같은 방식을 취합니다.
    이를 위해서는 인스턴스 이름이 필요합니다. 즉, 행동의 주체에 대한 이름이 필요한 것입니다.
    이를 플래시의 액션 스크립트로 표현한다면 다음과 같이 됩니다.

    _root.TV.Channel(9);

    이 때의 _root는 인스턴스의 절대 경로를 가리키는 것인데, 자세한 내용은 다음에 다루겠습니다.
    'TV'는 인스턴스 이름이 되겠고, 'Channel'은 매서드, '(9)'는 변수인 것입니다.

    앞 강좌의 예제를 플래시에서 열어 보십시오.
    달리는 사람은 무비클립입니다.
    이를 선택하고, 아래의 속성을 보면 다음과 같이 'runwoman'이라는 인스턴스 이름이 붙어있는 것을 확인할 수 있습니다.
     

    이렇게 붙여진 이름을 토대로, 아래의 'RUN'과 'STOP' 버튼에 액션 스크립트를 넣어줄 수 있습니다.

    이렇듯 인스턴스는 스테이지에 사용된 한 개체로 스테이지에서의 역할에 따라 각기 다른 이름을 가질 수 있으며, 다른 일을 수행할 수 있습니다.

    버튼이나 텍스트박스에도 이와 같은 방법으로 인스턴스 이름을 붙이고, 버튼이나 키프레임을 통해 액션 스크립트를 만들 수 있습니다.