精華區beta Web_Design 關於我們 聯絡資訊
※ 引述《shayato (in dreams)》之銘言: : 我想做一個東西是 : 當滑鼠點下後,指定的物件會開始朝向滑鼠點下的方向前進 : 可以請高手指教一下嗎...? : 謝謝 以下是我寫的程式碼, 寫在 Timeline 第一格 在 MX 2004 下測試正常, 不過好像有點長了, 不知道有沒有更好的方法 PS: 其中 mc 為該物件的名稱 var nV:Number = 100; // 移動速率 (pixel/sec) var nUpdateRate:Number = 30; // 每多少毫秒更新一次 (愈小愈平順) var nMinRange:Number = 2; // 與目的地的距離小於此值時, 就直接黏在上面 (pixel) var nInterval:Number; var oListener:Object = new Object(); oListener.onMouseDown = function() { // 按下滑鼠時的動作 clearInterval(nInterval); var nX:Number = Math.floor(_root._xmouse); var nY:Number = Math.floor(_root._ymouse); nInterval = setInterval(moveAnimate, nUpdateRate, nX, nY); }; Mouse.addListener(oListener); function moveAnimate(nX:Number, nY:Number):Void { var nDistance:Number = Math.sqrt(Math.pow(nX-mc._x, 2) + Math.pow(nY-mc._y, 2)); var nXPart:Number = (nX - mc._x) / nDistance; // X 分量 var nYPart:Number = (nY - mc._y) / nDistance; // Y 分量 mc._x += nV * nXPart * nUpdateRate / 1000; mc._y += nV * nYPart * nUpdateRate / 1000; if (isOut(nX)) { // 判斷是否夠接近於目的地 clearInterval(nInterval); } updateAfterEvent(); } function isOut(nTargetX:Number):Boolean { if (Math.abs(nTargetX - mc._x) <= nMinRange) return true; return false; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.58.168.200 ※ 編輯: eliang 來自: 210.58.168.200 (08/10 13:37)