2014-06-19 32 views
0

你如何獲得鼠標移動,但只有當你點擊。鼠標移動,而鼠標沒有在Dart工作?

我知道這是你如何跟蹤鼠標是否被點擊:

canvas.onMouseDown

,這是你如何跟蹤鼠標移動canvas.onMouseMove

所以我試着這樣做:

//when the mouse is clicked 
canvas.onMouseDown.listen((onData){ 
print("Mouse is down!" + "(" + onData.client.x.toString() + ", " + onData.client.y.toString() + ")"); 

//check where it's being dragged 
canvas.onMouseMove.listen((onData){ 
    mouseMovementsDown(onData.client.x, onData.client.y); 
}); 

}); 

但問題是它不停止,一旦我停止點擊。只要鼠標關閉,我想跟蹤移動,一旦鼠標不再下移,我想停止跟蹤鼠標的移動。誰能幫我?出於某種原因,這件事情繼續報告canvas.onMouseMove,即使我把鼠標放在上面。

我也試過這樣:

if(canvas.onMouseDown.listen(onData) == true) 

但很顯然,這不是事情鏢如何工作>>。

我在dart api docs上了解了更多關於流的信息,有人可以向我解釋接近的用法嗎?我認爲它說這就是你如何停止從鼠標事件獲取輸入,但是如何做到這一點,我不真正瞭解canvas.onMouseUp發生時如何編寫代碼來停止canvas.onMouseMove.listen流。

回答

1

您可以參考存儲鼠標移動StreamSubscription並取消其在mouseUp事件:

canvas.onMouseDown.listen((onData) { 

    StreamSubscription mouseMoveStream = canvas.onMouseMove.listen((onData) { 
    // Do things... 
    }); 

    canvas.onMouseUp.listen((onData) => mouseMoveStream.cancel()); 

}); 
+0

謝謝!這工作完美! :d – user3505901