점 위치에 따른 라디안 값을 구하는건데요~
헛나발
마우스로 컨트롤러(조이스틱)를 만들려고 하는데요.
조이스틱을 위에서 본 그림을 버튼으로 하고 그것을 무비클립으로 만들었습니다.
마우스로 클릭하면 컨트롤러가 따라서 움직이고
마우스가 컨트롤러 움직임 범위를 벗어나면 컨트롤러가 그 각도방향으로
범위 한계부분에 있도록 하는 액션을 만드는데
클릭후 원 범위내에 있게는 만들었는데
마우스와 각도를 일치시키기위한 라디안 각도를 구하는 법을 잘 모르겠네요.프래임 액션...
var NavBtnDia = 45 ; //컨트롤러 지름
var NavBtnXPoz = 160 ; //컨트롤러 중심 x
var NavBtnYPoz = 470 ; //컨트롤러 중심 y
var NavBtnMoveArea = 20 ; // 컨트롤러 움직임 범위 반지름
var dragChk = false ;컨트롤러 무비클립액션...
onClipEvent(load){
var nowXPoz ; // 마우스클릭시 와 크릭위치와 컨트롤러중심과의 간격x
var nowYPoz ;// 마우스클릭시 와 크릭위치와 컨트롤러중심과의 간격y
var areaX ;
var areaY ;
var areaVal ;
var areaDgr ;
}
onClipEvent(enterFrame){
this.areaX = _root._xmouse - _parent.NavBtnXPoz ;
this.areaY = _root._ymouse - _parent.NavBtnYPoz ;
this.areaVal = this.areaX * this.areaX + this.areaY * this.areaY ;
this.areaDgr = ; // - 이 부분에 들어갈 마우스 위치에 따른 라디안 값 구하기 공식
trace(this.areaVal + , + (_parent.NavBtnMoveArea * _parent.NavBtnMoveArea ));
if(_parent.dragChk){ //드래그 시작된후
if( this.areaVal (_parent.NavBtnMoveArea * _parent.NavBtnMoveArea ) ){ //마우스가 컨트롤러 범위를 넘지않을 경우
this._x = _root._xmouse + this.nowXPoz ;
this._y = _root._ymouse + this.nowYPoz ;
}else if( this.areaVal = (_parent.NavBtnMoveArea * _parent.NavBtnMoveArea ) ){ //마우스가 컨트롤러 범위를 넘는 경우
this._x = _parent.NavBtnXPoz + _parent.NavBtnMoveArea * Math.cos(this.areaDgr) ;
this._y = _parent.NavBtnYPoz + _parent.NavBtnMoveArea * Math.sin(this.areaDgr) ;
}
}
}컨트롤러 무비클립안 버튼 액션...
on(press){
_parent.dragChk = true ;
this.nowXPoz = this._x - _root._xmouse ;
this.nowYPoz = this._y - _root._ymouse ;
}
on(release , releaseOutside ){
_parent.dragChk = false ;
this._x = _parent.NavBtnXPoz ;
this._y = _parent.NavBtnYPoz ;
}
-
잎새
아~~ 되는데요~~ 중심점을 기점으로 오른편만 적용되고 왼편은 반대로 움직여요..ㅠ,.,.,ㅠ 흑.. 그래두 넘 감사합니다. 파이를 더해서 해결했습니다.^^
-
이퓨리한은지
각도 구하는 공식은 Math.atan((중심점y-마우스y)/(중심점x-마우스x)) 이렇게 하시면 될듯합니다.
-
에드윈
답변주셔서 감사합니다.
이 공식은 이거 만들면서 함 적용해 봤는데요.
어떻게 써먹어야 할 지 모르겠더라구요..
그래서 이렇게 원에서 한점 찾아주는 공식 찾아다가 만들게 됐답니다.
그런데 마우스 위치에따른 호도법 쎄타값을 모르겠드라구요..
요것만 넣으면 될텐데 말이죠..ㅠㅠ -
이뻐
function rotation_mc(fx, fy, lx, ly, mc){
tmpX = fx-lx;
tmpY = fy-ly;
rotation = Math.atan2(tmpY, tmpX)*180/Math.PI;
mc._rotation = rotation+90;
}
fx = 바라볼 대상의 x좌표
fy = 바라볼 대상의 y좌표
lx = 회전시킬 무비클립의 x좌표
ly = 회전시킬 무비클립의 y좌표
mc = 회전시킬 무비의