2011-03-24 9 views
1

嘿團伙旋轉圖像。磕磕絆絆。問題的MOUSE_MOVE

我有我與event.MOUSE_MOVE鼠標,像一些音頻設備滾輪旋轉的光盤。幾乎一切都按預期工作,但我遇到的問題是盤始終跳轉到用戶點擊光盤上的點。當用戶旋轉光盤時,我需要用戶點擊光盤上的點以保持在鼠標下,但我似乎無法拿出正確的數學來實現它。下面是我使用的代碼:

var xd = (_knob.x - _stageRef.stage.mouseX); 
var yd = (_knob.y - _stageRef.stage.mouseY); 
var radAngle = Math.atan2(yd, xd); 
_knob.rotation = int(radAngle * 360/(Math.PI * 2) - 90); 

_knob是一個矢量圓圈包裹在一個movieclip,與中心的movieclip的REG點的圓。 _stageRef表示主階段。

任何幫助都會很棒。我已經搜遍了互聯網,無法提供任何東西。

Thx!

回答

1

您正在將_knob旋轉設置爲_knob和鼠標光標之間的角度。所以如果旋轉角度爲0°,角度爲45°,則旋轉角度爲45°,因此它會跳躍。你需要的是措施在這種角度改變,不能立即將其設置:

var _mouseAngle:Number; 

function getMouseAngle():Number 
{ 
    var xd = (_knob.x - _stageRef.stage.mouseX); 
    var yd = (_knob.y - _stageRef.stage.mouseY); 
    return Math.atan2(yd, xd); 
} 

function onMouseDown(event:MouseEvent):void 
{ 
    _mouseAngle = getMouseAngle(); 
} 

function onMouseMove(event:MouseEvent):void 
{ 
    var newAngle:Number = getMouseAngle(); 
    _knob.rotation += (newAngle - _mouseAngle) * 180.0/Math.PI; //EDIT: forgot to convert into degrees 
    _mouseAngle = newAngle; 
} 

(代碼未測試)

+0

我看到你要去哪裏,在這裏,但它似乎並不奏效。不要將角度轉換回弧度以用於旋轉屬性?這條線似乎缺乏的是:_knob.rotation + = newAngle - _mouseAngle;我嘗試實施你的建議,但它目前波動而不是旋轉。 – Ribs 2011-03-24 21:24:28

+0

你不能返回一個int void函數。含義:function getMouseAngle():void應該是函數getMouseAngle():Number。我編輯了你的答案來匹配這個。 – SimplyZ 2011-03-24 23:07:48

+0

我看到他的回答,並在我的測試中改變了它。我沒有想到要編輯他的答案:P – Ribs 2011-03-24 23:12:02