如何获得鼠标移动,但仅在单击时才能获得。
我知道这是您跟踪是否单击鼠标的方式:
canvas.onMouseDown
这就是您跟踪画布运动的方式。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文档上阅读了有关流的更多信息,有人可以向我解释使用紧密度如何?我认为这就是您停止从鼠标事件获取输入的方式,但是这样做是不是真的不明白在canvas.onMouseUp发生时如何编写代码来停止canvas.onMouseMove.listen流。
您可以存储对mouseMove的引用,StreamSubscription
并在mouseUp上将其取消:
canvas.onMouseDown.listen((onData) {
StreamSubscription mouseMoveStream = canvas.onMouseMove.listen((onData) {
// Do things...
});
canvas.onMouseUp.listen((onData) => mouseMoveStream.cancel());
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句