본문 바로가기

무언가 만들기 위한 지식/Action Script

onEnterFrame을 이용한 Mouse Move

mouse이동에 관련소스중 가장 기본적인것은 다음과 같다.

1) 마우스 따라다니기.(무비클립에 작성)
onClipEvent(enterFrame)  //매번 프레임마다 실행
{
      this._x+=this._xmouse/10;   //여기서 this._x는 해당 무비인스턴스(이하무비)의 전체 화면의 위치이다.
      this._y+=this._ymouse/10;   //this._xmouse는 해당 무비클립을 기준으로한 마우스의 x위치이다. 전체에 비례한 마우스 위치가 아니라는 사실에 주위해야한다.
}   //실행해보면 마우스를 따라 자연스럽게 움직인다. 10을 변경하여 속도조정가능함.

2) 마우스 클릭시 이동(메인 프레임 작성)
개인적으로는 메인 프레임에 작성하는 방식을 애용한다. 코드관리가 편하니깐.(하지만 가끔 무비에 꼭 해야만 하는 경우도 있다.)
움직이려는 무비 네임이 mysat이다.

_global.targeX=this.mysat._x; //무비의 x,y위치를 전달, 초기값을 정하여 마우스 클릭시 움직이지 않게 하기 위함.
_global.targeY=this.mysat._y;

mysat.onEnterFrame=function()
{
        this._x+=(targetX-this._x)/10;  //마우스 클릭시 변수 전달되고 자연스러운 이동.
        this._y+=(targetY-this._y)/10; //1)번과 같은 방식임.
}

this.onMouseDown=function()
{
        _global.targeX=_root._xmouse;
        _global.targeY=_root._ymouse;
}
//실행해보면 마우스 클릭하면 마우스 클릭한곳으로 자연스럽게 움직인다.

3) 탄력있는 마우스 이동
메인프레임에 작성한다.
_global.accel=0.7;          //accel과 convert는 약간 부드러움을 주기위한 수치임. 원하는데로 수정하면됨
_global.convert=0.15;
_global.xspeed=0;
_global.yspeed=0;
asdf.onEnterFrame=function()  //asdf가 무비 인스턴스 네임이다.
{
       _global.xspeed=xspeed*accel+(_root._xmouse-this._x)*convert;
       _global.yspeed=yspeed*accel+(_root._ymouse-this._y)*convert;
       this._x+=xspeed;  //기본은 1번과 같다. 단지 accel에 의하여 기존 x,y위치도 조금씩 변화한다.
       this._y|=yspeed;  //accel과 convert로 적절한 속도조절
}
//마우스포인터를 asdf가 탄력있게 따라다닌다.


[Enterframe 사용시 정지하고 싶을경우]


delete함수를 이용하면 EnterFrame을 정지한다.
사용법 : delete(enterframe);
ex) delete(_root.opwd.op.onEnterFrame);