RaphaelJS / Snap.SVG拖动事件?

时间:2014-05-19 15:45:36

标签: javascript raphael

Raphaël(及其继任者,Snap)都有drag()方法(RaphaëlSnap),并声称:

  

此外,还会触发以下drag个事件:开始时为drag.start.<id>,结束时为drag.end.<id>,每次移动都会drag.move.<id>。当元素被拖过时,另一个元素drag.over.<id>也会被触发。

问题是,那些附加事件是在上触发的吗?我尝试了document.addEventListener('drag.move.0')paper.node.addEventListener('drag.move.0'),似乎都没有触发。我需要听哪些对象来获取那些全局拖拽事件?

1 个答案:

答案 0 :(得分:2)

好吧,做了我自己的潜水源,并发现它有点纠结,正如伊恩所说的那样。首先,在Snap中,事件名称更改为snap.前缀(source)。

查看该源代码,Snap正在使用自己的事件库(“Eve”),它根本不使用本机侦听器,因此事件不会绑定到任何对象,它们只是为了事物的命名空间你有兴趣知道:

eve.on('snap.drag.start.0', function(el) {
  console.log('Item 0 started dragging!');
});

传递给侦听器的参数是传递给原始start_scope调用的drag(),或者是当时未设置的被拖动元素。

eve库允许在其范围内使用通配符,例如:

eve.on('snap.drag.start.*', function(el) {
  console.log('Item ' + el.id + ' started dragging!');
});

应该听取所有拖动动作。