javascript - KonvaJS:如何用箭头连接两个形状?

标签 javascript html5-canvas kineticjs konvajs

我想使用 Konvajs 来完成以下任务:

  1. 在 Canvas 上绘制两个矩形组。每组包含一个矩形、文本和一个圆
  2. 当我用鼠标从圆圈中拖动时,它在拖动的同时绘制了一个箭头。
  3. 当我将箭头放到另一个组中时,它停止绘制并将两个组边对边连接起来

像这样:

example

是否有支持形状之间连接的原生方法? 谁能给我一些例子吗?

最佳答案

我已连接 Konva.Circles。但是图像的逻辑也是一样的。请查找 plunkr

var width = window.innerWidth;
    var height = window.innerHeight;

    var stage = new Konva.Stage({
      container: 'container',
      width: width,
      height: height
    });

    var layer = new Konva.Layer();

    var circle = new Konva.Circle({
      x: stage.getWidth() / 2,
      y: stage.getHeight() / 2,
      radius: 40,
      fill: 'green',
      stroke: 'black',
      strokeWidth: 2,
      draggable: true
    });

    var circleA = new Konva.Circle({
      x: stage.getWidth() / 5,
      y: stage.getHeight() / 5,
      radius: 30,
      fill: 'red',
      stroke: 'black',
      strokeWidth: 2,
      draggable: true
    });

    var arrow = new Konva.Arrow({
      points: [circle.getX(), circle.getY(), circleA.getX(), circleA.getY()],
      pointerLength: 10,
      pointerWidth: 10,
      fill: 'black',
      stroke: 'black',
      strokeWidth: 4
    });

    function adjustPoint(e){
      var p=[circle.getX(), circle.getY(), circleA.getX(), circleA.getY()];
      arrow.setPoints(p);
      layer.draw();
    }

    circle.on('dragmove', adjustPoint);

    circleA.on('dragmove', adjustPoint);

    layer.add(circleA);
    // add the shape to the layer
    layer.add(circle);
    layer.add(arrow);

    // add the layer to the stage
    stage.add(layer);

关于javascript - KonvaJS:如何用箭头连接两个形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265654/

相关文章:

javascript - 如何在数组中保存 <img> 标签源

php - js上的数组数据——好用吗?

javascript - 在纯 JavaScript 中将 RGBA 渲染为 PNG?

javascript - 无法将 Canvas 定位在页面顶部

javascript - Kinectjs Canvas 上 mousedown 位置的准确性和clearRect 未按预期工作

javascript - 如何在 kineticjs 中创建撤消-重做?

javascript - 如何更改 Javascript 上字符串的编码/字符集?

javascript - 在成功的 AJAX 调用和 php echo 的响应后附加数据并添加类

html - 当上下文转换到中心时,沿 Canvas 弧线的渐变描边消失

javascript - 如何使 Kinetic.Line 像其他 Kinetic 形状一样触发事件?