2015-01-04 157 views
1

我想弄清楚如何正確拖動窗口。 我拖着算法是類似的東西拖動窗口

if(left button is pressed and mouse intersects shape) 
    set position of shape to mouse position.x and mouse position.y 

所以設置在鼠標position.x和y位置形狀的左上角爲後。

我真的很感激如何正確拖拽的小建議。

+0

歡迎堆棧溢出。你可以添加一些關於你正在使用的技術的信息嗎?這將有助於人們幫助你。 –

回答

2

可能有必要單獨處理鼠標事件,所以,而不只是檢查是否左邊的按鈕被按下的,你還必須向下處理鼠標/向上事件(以確保您的阻力只有開始,當你按下你的鼠標在你的形狀內而不是之前)。

它也可能有必要用一個標誌要記住,如果你的拖動操作已經開始(讓你知道你有當鼠標移動來移動你的形狀)。

if(mouse down and mouse on shape) 
{ 
    start drag operation 
    var lastMousePosition = getCurrentMousePosition; 
} 
if(mouse moving and drag started) 
{ 
    var newMousePosition = getCurrentMousePosition; 
    var diff = newMousePosition - lastMousePosition; 
    add diff to current shape position 
    lastMousePosition = newMousePosition; 

} 
if(mouse released) 
{ 
    stop drag operation. 
} 
+0

感謝您的回覆,但問題出在「移動形狀」,移動到什麼位置? – jkbz64

+0

我更新了我的答案。這個想法是在鼠標移動之間存儲鼠標位置並計算兩個鼠標移動之間的差異。然後將此差異添加到您的形狀位置。這樣你的形狀應該像鼠標一樣移動,而不用直接跳到鼠標位置。 – pgenfer

+0

謝謝! ,這就是我想要的:) – jkbz64