베스트 키워드
주간 월간 연간
검색  상세검색
이벤트 디자이너를 위한 디자인 세상 아사달이 만들어갑니다.
디자인센터 보유 현황 오늘어제이번달지난달누적
웹기획
HTML 사용법
포토샵 사용법
일러스트 사용법
플래시 사용법
일러스트 만들기
편집사진 만들기
사물 편집사진 만들기
플래시 모션 만들기
플래시 스크립트 만들기
    - 액션스크립트 기초
    - 함수
    - for문 이해하기
    - Load 무비
    - 배열
웹구성 요소 만들기
웹 페이지 만들기
비즈니스 홈페이지 만들기
생활 홈페이지 만들기
쇼핑몰 홈페이지 만들기
액션스크립트 기초
Home > 디자인 센터 > 웹강좌 > 플래시 스크립트 만들기 > 액션스크립트 기초
메서드 콜백함수 계층구조의 이해 무비클립 속성 설정 onClipEvent 핸들러 1
onClipEvent 핸들러 2 if문 1 if문 2 startDrag 1 startDrag 2
부드러운 움직임

속성이란 물체가 가지는 특성을 말합니다. 무비클립의 경우에는 위치, 크기, 회전 및 투명도와 같은 여러 가지 속성이 있습니다. 속성이 있다는 것은 속성을 제어할 방법이 있다는 말이 되겠죠?
플래시 무비클립의 속성은 아래와 같습니다.
매서드 설명
_alpha 무비클립의 투명도를 나타내는 것으로 0부터 100까지의 값을 가집니다. 0으로 설정하면 완전히 투명해지고 100으로 설정하면 완전 불투명해집니다.
_x,_y 무비클립의 x, y 위치를 나타냅니다.
_rotation 무비클립의 회전 정도를 나타내는 것으로 값만큼 시졔방향으로 회전합니다. _rotation은 0부터 360의 값을 가지며 180은 시계 방향으로 반 바퀴, 360은 시계방향으로 한 바퀴 회전합니다.
_xmouse
_ymouse
마우스의 x 및 y 좌표를 반환합니다. 위에 _x, _y는 무비클립의 좌표이므로 혼돈하면 안 됩니다.
_width
_height
무비클립의 가로 및 세로 길이를 나타냅니다. 단위는 픽셀이고 항상 절대 값으로 설정됩니다.
절대값의 크기는 -가 +와 동일한 크기를 갖습니다.
즉 _root.a_width = 100 과 _root.a_width = -100은 동일합니다.
_visible 참(true)과 거짓(false)이라는 값을 가지고, 거짓으로 설정되면 보이지 않게 됩니다.
_currentframe 무비클립의 현재 재생 프레임을 나타냅니다.
예를 들어 ‘this.gotoAndPlay(this._currentframe+10); 이라고 작성하면 무비클립의 현재 프레임 위치에서 10프레임 만큼 앞으로 이동하게 됩니다.
_totalframes 무비클립의 전체 프레임 수를 나타냅니다.
예를 들어 ‘this.gotoAndStop(this._totalframes);'라고 적으면 무비클립의 마지막 프레임으로 이동한 다음 정지하게 됩니다.

① 회전, 이동, 방향 지정하기
on(release){
_root.car._rotation = _root.car._rotation +10;
}
위 액션은 “버튼을 눌렀다 놓을 때마다 현재 ‘car’의 회전 값에 10을 더한 값을 son의 회전 값으로 대입하시오.” 라는 뜻입니다.
여기에서 “=”는 같다는 뜻이 아닌 대입하라는 뜻입니다.

그럼 콜백함수를 이용하여 위 내용과 같은 액션스크립트를 작성해 보세요!
<해결>
_root.버튼이름.onRelease = function(){
_root.car_rotation = _root.son._rotation + 10;
};
② 무비클립 위치 제어하기(좌표체계의 기초)

증가(X축)
증가(y축)
- 무비클립의 위치를 제어하려면 _x와 _y 속성을 이용하면 되지만, 좌표체계를 정확히 이해하지 못하면 원하는 결과를 얻을 수 있습니다. 일반적으로 y값을 10만큼 증가시키면 위로 10만큼 이동할 것이라고 생각되지만, 플래시에선 그 반대결과, 즉 아래로 10만큼 이동하게 됩니다. 플래시에서 사용하는 좌표체계에서는 화면의 왼쪽 상단이 원점이고, 아래로 내려갈수록 y값이 증가합니다.


위 그림과 같이 동그란 무비클립을 화살표 방향으로 이동시키려고 합니다. 동그란 무비클립의 인스턴스 이름을 A라 하고, 현재 위치에서 오른쪽으로 200, 아래쪽으로 150만큼 이동시킨다고 하면 위와 같이 스크립트를 적어주면 됩니다.
위 액션스크립트의 뜻은 현재의 x위치에 (root.A._x) 200만큼 더한 값을 새로운 x위치로 설정하고, 현재의 y위치에(root.A._y) 150만큼 더한 값을 새로운y위치로 설정하라는 뜻입니다. 아래로 이동하려면 y값이 증가해야 합니다.
_root.A._rotation = _root.A._rotation -90;
on(release){
_root.car._x = _root.car._x +10;
}
버튼을 누르면 자동차를 오른쪽으로 10만큼 이동시키라는 뜻입니다.
여기에서 방향이 왜 오른쪽인지는 아시겠죠?

그런데 차가 최초 방향에 따라 옆으로 이동하거나 뒤로 이동할 수 있습니다. 우리가 만들고 싶은 것은 오른쪽 방향 버튼을 누르면 차의 앞부분이 오른쪽을 향하게 하고 왼쪽의 방향을 누르면 차의 방향이 왼쪽을 향하게 하는 것입니다.
on(release){
_root.car._x = _root.car._x +10;
_root.car._rotation = 90;
}
_root.car._rotation = 90;은 시계방향으로 90도 회전하라는 뜻입니다. -90을 적어주면 시계 반대방향으로 90도 라는 뜻입니다.

※ 상하 좌우 자유롭게 움직이도록 방향 버튼을 만들어봅시다!

on(release){
_root.car.gotoAndStop(3);
_root.car._y = _root.car._y +10;
}
다른 방법으로 제작해 보았습니다. 자동차를 회전시킨 방법과 동일한 결과를 보여주지만 제작 방법에는 차이가 있습니다. _root.car.gotoAndStop(3);으로 적은 것은 1, 2, 3, 4 프레임별로 방향을 정해놓고 버튼을 누르면 해당 프레임에서 정지하도록 동일한 결과를 얻을 수 있습니다.
자 그럼 각 방향을 무비클립 안에 프레임에 지정해놓고 원하는 방향과 이동거리를 지정해서 움직여봅시다.
*** this ***
버튼이나 프레임에서 'this‘라고 하면 버튼이나 프레임을 뜻하는 것이 아니라 포함하고 있는 무비클립을 뜻합니다. 어떤 무비클립에서 this.stop() 이라고 적으면 this가 가리키는 것은 this를 포함하고 있는 무비클립을 뜻합니다.

② 사이즈와 값 정하기
플래시 액션스크립트 중에는 대칭이동을 시키는 스크립트가 따로 존재하지 않습니다. 그러나 메인무비 편집화면에서 Flip Horizontal, Flip Vertical 기능을 사용하면 대칭이동을 시킬 수 있습니다. 편집화면상에서 가능한 기능이면 액션스크립트에서도 가능합니다. 어떻게 가능한지 알아봅시다.

_xscale은 가로의 크기입니다. _yscale은 세로의 크기이겠죠? 크기는 절대값을 가지므로 -가 될 수 없습니다. 예를 들어 가로 길이를 200인 무비클립을 -200으로 지정할 경우 사이즈는 절대값이므로 변하지 않지만 방향은 반대로 바뀌게 됩니다.
즉 방향을 바꾸기 위해서는 사이즈를 음수로 지정하면 됩니다.
on(release){
_root.car._xscale = -100;
}
자동차의 방향이 반대로 바뀌었습니다.
on(release){
_root.car._xscale = -1*_root.car._xscale;
}
위 스크립트는 -1을 곱해 _xscale로 대입하라는 뜻입니다. 즉 계속 음수와 양수가 바뀌겠죠? 여기에서 =는 결과의 =가 아니라 대입하라는 뜻입니다. 플래시에서 수학기호의 =와 같은 것은 ==로 씁니다.

그럼 두 번째 스크립트를 쓰는 이유를 잘 생각해봅시다.
첫 번째 스크립트는 사이즈가 정해져 있기 때문에 모든 무비클립의 사이즈를 입력해줘야 한다는 것입니다.
디자인을 하다보면 모든 무비클립의 사이즈를 매번 기억하고 있는 것이 아니기 때문에 두 번째 스크립트와 같이 자신의 개체에 -를 곱하여 방향만 바뀌도록 하면 쉽겠죠?
사이트명 : 아사달닷컴 | 회사명 : (주)아사달 | 대표이사 : 서창녕 | 대표전화 : 070-7510-3007 | 팩스번호 : 02-2026-2008
사업자등록번호 : 206-81-24351 | 법인등록번호 : 110111-1940504 | 통신판매업신고 : 제18-890호 | 벤처확인번호 : 051134532200563
(우편번호 : 153-803) 서울특별시 금천구 가산동 371-28번지 우림라이온스밸리 A동 8층 (주)아사달
Copyright ⓒ asadal.com All rights reserved.
아사달 이용 가능 브라우저