속성이란 물체가 가지는 특성을 말합니다. 무비클립의 경우에는 위치, 크기, 회전 및 투명도와 같은 여러 가지 속성이 있습니다. 속성이 있다는 것은 속성을 제어할 방법이 있다는 말이 되겠죠?
플래시 무비클립의 속성은 아래와 같습니다.
매서드 | 설명 |
_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;
}
_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값이 증가합니다.
여기에서 “=”는 같다는 뜻이 아닌 대입하라는 뜻입니다.
그럼 콜백함수를 이용하여 위 내용과 같은 액션스크립트를 작성해 보세요!
<해결>
_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값이 증가해야 합니다.
위 액션스크립트의 뜻은 현재의 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;
}
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._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);
_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으로 지정할 경우 사이즈는 절대값이므로 변하지 않지만 방향은 반대로 바뀌게 됩니다.
즉 방향을 바꾸기 위해서는 사이즈를 음수로 지정하면 됩니다.
자 그럼 각 방향을 무비클립 안에 프레임에 지정해놓고 원하는 방향과 이동거리를 지정해서 움직여봅시다.
*** this ***
버튼이나 프레임에서 'this‘라고 하면 버튼이나 프레임을 뜻하는 것이 아니라 포함하고 있는 무비클립을 뜻합니다. 어떤 무비클립에서 this.stop() 이라고 적으면
② 사이즈와 값 정하기
플래시 액션스크립트 중에는 대칭이동을 시키는 스크립트가 따로 존재하지 않습니다. 그러나 메인무비 편집화면에서 Flip Horizontal, Flip Vertical 기능을 사용하면 대칭이동을 시킬 수 있습니다. 편집화면상에서 가능한 기능이면 액션스크립트에서도 가능합니다. 어떻게 가능한지 알아봅시다.
_xscale은 가로의 크기입니다. _yscale은 세로의 크기이겠죠? 크기는 절대값을 가지므로 -가 될 수 없습니다. 예를 들어 가로 길이를 200인 무비클립을 -200으로 지정할 경우 사이즈는 절대값이므로 변하지 않지만 방향은 반대로 바뀌게 됩니다.
즉 방향을 바꾸기 위해서는 사이즈를 음수로 지정하면 됩니다.
on(release){
_root.car._xscale = -100;
}
_root.car._xscale = -100;
}
자동차의 방향이 반대로 바뀌었습니다.
on(release){
_root.car._xscale = -1*_root.car._xscale;
}
_root.car._xscale = -1*_root.car._xscale;
}
위 스크립트는 -1을 곱해 _xscale로 대입하라는 뜻입니다. 즉 계속 음수와 양수가 바뀌겠죠? 여기에서 =는 결과의 =가 아니라 대입하라는 뜻입니다. 플래시에서 수학기호의 =와 같은 것은 ==로 씁니다.
그럼 두 번째 스크립트를 쓰는 이유를 잘 생각해봅시다.
첫 번째 스크립트는 사이즈가 정해져 있기 때문에 모든 무비클립의 사이즈를 입력해줘야 한다는 것입니다.
디자인을 하다보면 모든 무비클립의 사이즈를 매번 기억하고 있는 것이 아니기 때문에 두 번째 스크립트와 같이 자신의 개체에 -를 곱하여 방향만 바뀌도록 하면 쉽겠죠?
그럼 두 번째 스크립트를 쓰는 이유를 잘 생각해봅시다.
첫 번째 스크립트는 사이즈가 정해져 있기 때문에 모든 무비클립의 사이즈를 입력해줘야 한다는 것입니다.
디자인을 하다보면 모든 무비클립의 사이즈를 매번 기억하고 있는 것이 아니기 때문에 두 번째 스크립트와 같이 자신의 개체에 -를 곱하여 방향만 바뀌도록 하면 쉽겠죠?