2. 길동. 뛰어라
우리에게 익숙한 방식은 2번일 것입니다. 일상생활에서 어떤 명령을 할 때는 먼저 그 명령을 수행할 사람이 호출한 후에 명령을 전달합니다. 이렇게 되면, 프로그램을 분석할 경우에도 객체가 앞에 나오기 때문에, 어떤 객체가 다른 행동을 하더라도, 앞부분만 살펴봄으로써 그 객체에 해당하는 문장을 쉽게 찾을 수 있습니다.
액션스크립트는 점점 객체지향 프로그램으로 변화하고 있습니다, 객체지향 프로그램의 가장 큰 특징은 ‘자신의 것은 자신이 관리한다’라고 볼 수 있으므로, 각 오브젝트가 해야 할 일은 함수로 만드는 것보다 메서드로 만드는 것이 좋습니다.
메서드를 선언하는 형식은 다음과 같습니다.
실행할 액션들;
};
// 무비클립.moveX(10);
/*
MovieClip.prototype.함수명 = function(매개변수){
//액션
};
*/
// prototype을 이용해서 메서드를 작성할 경우, 메서드 안에서
// this는 메서드를 호출한 객체{무비클립}을 가리킵니다.
MovieClip.prototype.moveX = function(dx){
this._x = this._x + dx;
};
_root.bird.moveX(100)
MovieClip.prototype.moveXY = function(dx, dy) {
this._x = this._x + dx;
this._y = this._y + dy;
};
this.onMouseDown = function(){
_root.orange.moveXY(10, 20);
_root.green.moveXY(-10, 5);
};
this._x += sp*(tx - this._x);
this._y += sp*(ty - this._y);
}
this.onEnterFrame = function(){
_root.red_mc.smoothMove(0.1, _root._xmouse, _root._ymouse);
};
MovieClip.prototype.smoothMove = function(sp, tx, ty){
this._x += sp*(tx - this._x);
this._y += sp*(ty - this._y);
}
이 부분은 smoothMove에 대한 메서드를 선언한 것입니다.
this.onEnterFrame = function(){
_root.red_mc.smoothMove(0.1, _root._xmouse, _root._ymouse);
};
이 부분은 red_mc의 무비클립이 마우스를 0.1의 가속도 인자 값을 가지고 따라가도록 지정한 것입니다. 쉽게 풀이하면 _root._xmouse는 targetX가 되고 _root._ymouse는 targetY가 되며 0.1은 가속도 인자인데 그 이유는 this._y += sp*(ty - this._y); 공식에 의해 가속도 인자가 된 것입니다.
this._y += sp*(ty - this._y); 공식은 부드러운 움직임의 공식인데 여기에서 sp의 값을 바꾸면 가속도가 바뀝니다. 즉 가속도 인자입니다. function(sp, tx, ty)에서 ()안에 각 매개변수를 지정하였기 때문에 _root.red_mc.smoothMove(0.1, _root._xmouse, _root._ymouse); 공식에서 0.1은 가속도의 값이 되는 것입니다.
아래 예제를 따라해 보고 거리를 구하는 공식에 대하여 알아봅시다.
this._x += sp*(tx - this._x);
this._y += sp*(ty - this._y);
}
this.onEnterFrame = function(){
_root.red_mc.smoothMove(0.1, _root._xmouse, _root._ymouse);
};
this._x += sp*(tx - this._x);
this._y += sp*(ty - this._y);
}
this.onEnterFrame = function(){
_root.red_mc.smoothMove(0.1, _root._xmouse, _root._ymouse);
};
this._x = x1;
this._y = y1;
this._xscale = x2 - x1;
this._yscale = y2 - y1;
};