【问题标题】:Tracking mouse movement in Dart?在 Dart 中跟踪鼠标移动?
【发布时间】:2014-06-17 19:51:03
【问题描述】:

我编写了一个基本程序来获取画布上的鼠标位置,每次运行它都会冻结我的计算机,有人可以看看吗?另外,如果您知道更好的方法来做到这一点,那就太好了。

我决定学习这门语言是因为我不喜欢 JavaScript,而且我读到它非常适合 Java/C++ 人,所以这就是我开始学习这门语言的原因。

import 'dart:html';
import 'dart:async';
import 'package:polymer/polymer.dart';

CanvasElement canvas = document.querySelector('#myPaintCanvas');
CanvasRenderingContext2D context = canvas.getContext('2d');


void pencil(mouseX, mouseY){
print("This is from pencil method: MouseX: " + mouseX.toString() + " MouseY: " + mouseY.toString());
}


void mouseDragginStarts(moveX, moveY){
print("This is from mouseDragging: " + "mouseX: "+ moveX + " mouseY:" + moveX);
}

void main(){
//get a refrence to the canvas

//canvas.onClick.listen((e) {
canvas.onDrag.listen((e){
print("Got a click (${e.client.x-canvas.offsetLeft}, ${e.client.y-canvas.offsetTop})");
pencil(e.client.x-canvas.offsetLeft, e.client.y-canvas.offsetTop);


//while(canvas.onClick.listen(e) == true && canvas.onDrag.listen(e) == true){
while(canvas.onDrag == true){
  mouseDragginStarts(e.client.x, e.client.y);

  if(e==false){
    break;
  }
}

});



/*context.moveTo(100, 150);
context.lineTo(450, 50);
context.lineWidth = 4;
//set the line color
context.strokeStyle = '#ff0000'; //red
context.stroke();*/
}

【问题讨论】:

    标签: dart dart-html


    【解决方案1】:
    while(canvas.onDrag == true){ <== I wonder if it enters the loop, canvas.onDrag never becomes true
      mouseDragginStarts(e.client.x, e.client.y);
    
      if(e==false){ <== e never becomes false
        break;
      }
    }
    

    您的代码没有任何意义。您应该从解释您实际尝试完成的任务重新开始。

    当您只想跟踪鼠标移动时,您只需这样做

    canvas.onMouseMove.listen((e) {
      // do something with mouse coordinates
      // e.client.x, e.client.y
    });
    

    【讨论】:

    • 我的坏兄弟,只是我不太了解这方面的文档。我只是想获得我的鼠标在画布上所做的运动。我认为我必须使用 canvas.onDrag 因为我认为我必须单击并拖动才能真正跟踪我的运动。对不起。
    • onMouseMove 应该足够了。您可能还对 onMouseEnter、onMouseLeave、onMouseOver 感兴趣。您传递给监听的方法(onMouseMove,onMouseOver)会为每个小鼠标移动(经常)调用。但是您不需要 onDragXxxx 事件。您还有 onMouseDown、onMouseUp(或 onClick,当 onMouseDown 和 onMouseUp 出现在同一位置时还会触发)
    猜你喜欢
    • 2013-08-21
    • 2019-09-04
    • 2022-06-22
    • 2021-12-10
    • 2012-10-15
    • 2021-02-06
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多