ㅇㅇ 날씨가 넘좋아요~ 놀러가구 싶당...... 여자들의 치마두 짧아지구^^(변태 아닙니당~)
이번에는 피타고라스의 정리를 이용하여 어느 물체와의 마우스와의 거리를 구하는 것을 해보겠습니다 일단 무비클립을 하나만들고 이름은 baseObj 그리고 다이나믹 텍스트를 하나만들어서 이름이 아닌 변수값에 display
그리고 프레임에 액션
function calculateDistance(baseX, baseY, movingX, movingY) { diffX = movingX-baseX; diffY = movingY-baseY; return Math.sqrt(diffX*diffX+diffY*diffY); } this.onEnterFrame = function() { display = Math.floor(calculateDistance(baseObj._x, baseObj._y, _root._xmouse, _root._ymouse)); _root.baseObj._xscale = _root.baseObj._yscale=display; };
매번말하는것이지만 복잡해보일때는 하나하나 써가며 계산을 해보면 답이나옵니다.
일단 calculateDistance() 를 정의하고 그밑에 onEnterFrame 에서 함수를 호출합니다 먼저시스템 흐름상 위에서부터 실행이되지만 위부분은 함수 정의부분이므로 그냥 지나치고 밑의부분이 실행이됩니다 그러니
this.onEnterFrame = function() { display = Math.floor(calculateDistance(baseObj._x, baseObj._y, _root._xmouse, _root._ymouse)); _root.baseObj._xscale = _root.baseObj._yscale=display; };
요기부터 설명하겠습니다 이벤트는 enterFrame 이므로 계속실행해라 display는 어쩌구 저쩌구~ display 변수는 다이나믹 변수 이므로 어쩌구저쩌구 에서 나오는 값이 대입이됩니다 그러니 다이나믿 텍스트에 출력이 되는것입니다
Math.floor(calculateDistance(baseObj._x, baseObj._y, _root._xmouse, _root._ymouse));
Math.floor 은 바닥값입니다 (나온값의 가장작은정수 ex 4.9 --> 4 ) 그러니 calculateDistance(baseObj._x, baseObj._y, _root._xmouse, _root._ymouse) 함수를 호출하여나온값의 정수를 만들어라 입니다 함수를 호출하면서 4개의 아규먼트를 보냅니다 (무비클립의 x좌표,무비클립의 y좌표,마우스x좌표,마우스y좌표)
그럼이제 함수부분으로 가겠습니다
function calculateDistance(baseX, baseY, movingX, movingY) { diffX = movingX-baseX; diffY = movingY-baseY; return Math.sqrt(diffX*diffX+diffY*diffY); }
매개변수를 받아서 그값으로 계산을 합니다 여기서는 말로 설명하기는 힘들어소 그림으로 설명을 드리겠습니다(처음으로 그림으로 설명드리네요^^)
만약 마우스와 무비클립이 그림같은 위치에 있다면 diffX = movingX-baseX; //diffX 는 둘사이의 x 거리를 나타내며 diffY = movingY-baseY; //dissY는 둘사이의 y거리를 나타냅니다 그리고 return Math.sqrt(diffX*diffX+diffY*diffY);
return 은 나온값을 다시 되돌린다는 뜻입니다 그러니 함수를 호출한 데로 값을 전달하는것입니다
Math.sqrt(diffX*diffX+diffY*diffY);
Math.sqrt은 제곱근을 계산하는것입니다 여기서 피타고라스의 정리가나옵니다(설마 기억안나시는분없겠죠^^) 삼각형이 직각일때 한변의길이제곱 + 다른한변의길이제곱 = 빗변의길이제곱 간단하죠^^ 아무리복잡해도 이런식으로 계산하다보면 답이보입니다 물론 많이 복작한것은 좀힘들겠지만^^ 이제그만 작업을해야겠네요~ 모두모두 즐거운 하루~
출처 : http://www.flasia.co.kr/old/homeV2.0/index.htm 권용재 님의 글입니다. |