处理 Polymer.dart 中的跟踪事件

Handling tracking events in Polymer.dart

我正在尝试构建自定义 Polymer 元素。一段时间以来,我一直在成功构建 Polymer 元素。这是我第一次需要使用复杂的鼠标和手势事件。

在处理鼠标事件之后,我发现 Polymer 为我们提供了 touch & gesture events,在这种工作中非常方便。

但是我无法让它在 Dart 中运行。

fx_slider.html:

<div id="main-div">
  <div id="slider-track"></div>
  <div id="slider-thumb" on-trackstart="{{trackStartHandler}}"
    on-trackend="{{trackEndHandler}}" on-track="{{trackHandler}}">
  </div>
</div>

fx_slider.dart:

void trackStartHandler (Event e) {
  dragging = true;
}

void trackEndHandler (Event e) {
  dragging =  false;
}

void trackHandler (Event e, var detail, Node target) {
  /* How to retrieve the mouse position or the dx property from event ??? */
}

我的事件处理程序 (trackHandler) 收到 Event 而不是 TrackEventMouseEvent,所以我无法获得用户的移动或光标的位置。

谁能告诉我如何在 Dart 中使用跟踪事件?

提前致谢!

这是因为 Dart 尚不支持触摸手势。

有一个解决方法(另请参阅 http://dartbug.com/21138 - 在我自己弄清楚之后发现它:-/)

void trackHandler (Event e, var detail, Node target) {
  var touchEvent = new js.JsObject.fromBrowserObject(e);
  print('x: ${touchEvent['dx']}, y: ${touchEvent['dy']}');
}

调试器在 [[JavaScript View]] 节点中显示更多属性。