鼠标移动,而鼠标在Dart中不起作用?

时间:2014-06-19 02:06:23

标签: html5 canvas html5-canvas dart dart-editor

如何进行鼠标移动,但只有在您点击后才能进行鼠标移动。

我知道这是跟踪鼠标是否被点击的方式:

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>中的情况并非如此。&gt ;;

我在dart api文档上阅读了更多关于流的内容,有人可以向我解释一下如何使用它吗?我认为它说你是如何停止从鼠标事件中获取输入的,但是如何做到这一点我真的不明白如何编写代码以在canvas时停止canvas.onMouseMove.listen流。 onMouseUp发生。

1 个答案:

答案 0 :(得分:1)

您可以存储对mouseMove StreamSubscription的引用,并在mouseUp上取消它:

canvas.onMouseDown.listen((onData) {

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

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

});