首页 文章

处理Polymer.dart中的跟踪事件

提问于
浏览
4

我正在尝试构建一个自定义的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中使用跟踪事件?

提前致谢!

1 回答

  • 5

    这是因为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]] 节点中显示更多属性 .

相关问题