用hammer.js和kinetic.js获取被触摸的元素

时间:2014-02-27 16:58:57

标签: jquery kineticjs hammer.js

是否有可能获得当前对象?

for(var n = 0; n < 10; n++) {
    var circle = new Kinetic.Circle({
        x: Math.random() * stage.getWidth(),
        y: Math.random() * stage.getHeight(),
        radius: Math.random() * 50 + 25,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 3,
        draggable: true,
        id: 'img'+n
    });

    var transformer = Hammer(circle);  //kineticjs stage
    transformer.on('doubletap', function (e) {
        alert(e);  // get the current object
    });

    layer.add(circle);
} 

http://jsfiddle.net/HF3dL/4/

e不是当前元素,而是触摸事件。如果我试试 e.target - 未定义元素 和 e.gesture.target是画布元素......

但我想得到触动的元素..

1 个答案:

答案 0 :(得分:0)

您可以使用javascript closure:

for(var n = 0; n < 10; n++) {
  (function(){
    var circle = new Kinetic.Circle(conf);

    var transformer = Hammer(circle);  //kineticjs stage
    transformer.on('doubletap', function (e) {
      alert(e);  // get the current object
    });

    layer.add(circle);
  })();
}

或者等待新版本,然后您就可以使用targetNode属性:

 transformer.on('doubletap', function (e) {
      console.log(e.targetNode);
 });