Konvajs取消拖动事件

时间:2019-02-28 12:20:06

标签: javascript konvajs

我正在使用dragBoundFunc限制拖动移动,但是在一定距离下我想取消拖动,其目的是当用户尝试移动到远处时对象会自动掉落。

我尝试使用event.preventDefault(),但不起作用。

我该如何实现?

var image1 = new Konva.Image({
  image: imageObj,
  x: limit.left,
  y: limit.top,
  width: gBoxSize ,
  height: gBoxSize ,
  name: 'gameobj',
  draggable: true,

  dragBoundFunc: function(pos,event) {
      var newPos = {x: pos.x, y: pos.y};

      // if newPos exceeds 200px I want force to cancel the drag
      if(Math.abs(prevPos.x - newPos.x) > 200){
         // ?
      }

      if(newPos.x <= limit.left){
          newPos.x = limit.left;
      }else if(newPos.x >= limit.right){
          newPos.x = limit.right;
      }

      if(newPos.y <= limit.top){
          newPos.y = limit.top;
      }else if(newPos.y >= limit.bottom){
          newPos.y = limit.bottom;
      }

      // do some stuffs

      return newPos;
  }            
});

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用node.stopDrag()方法:

if(Math.abs(prevPos.x - newPos.x) > 200){
  image1.stopDrag();
}

但是最好使用dragmove事件来检查该条件并停止对其进行拖动。