DIR : /home/kozerus/public_html/go/konva_drop.html

/home/kozerus/public_html/go

Konva Drop Events Demo
view raw

<!DOCTYPE html>
<html>
  <head>
    <script src="https://unpkg.com/konva@8.3.1/konva.min.js"></script>
    <meta charset="utf-8" />
    <title>Konva Drop Events Demo</title>
    <style>
      body {
        margin: 0;
        padding: 0;
        overflow: hidden;
        background-color: #f0f0f0;
      }
    </style>
  </head>
  <body>
    <div id="container"></div>
    <script>
      var width = window.innerWidth;
      var height = window.innerHeight;

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

      var layer = new Konva.Layer();

      stage.add(layer);

      var tempLayer = new Konva.Layer();
      stage.add(tempLayer);

      var text = new Konva.Text({
        fill: 'black',
      });
      layer.add(text);

      var star;
      for (var i = 0; i < 10; i++) {
        star = new Konva.Star({
          x: stage.width() * Math.random(),
          y: stage.height() * Math.random(),
          fill: 'blue',
          numPoints: 10,
          innerRadius: 20,
          outerRadius: 25,
          draggable: true,
          name: 'star ' + i,
          shadowOffsetX: 5,
          shadowOffsetY: 5,
        });
        layer.add(star);
      }

      stage.on('dragstart', function (e) {
        e.target.moveTo(tempLayer);
        text.text('Moving ' + e.target.name());
      });

      var previousShape;
      stage.on('dragmove', function (evt) {
        var pos = stage.getPointerPosition();
        var shape = layer.getIntersection(pos);
        if (previousShape && shape) {
          if (previousShape !== shape) {
            // leave from old targer
            previousShape.fire(
              'dragleave',
              {
                type: 'dragleave',
                target: previousShape,
                evt: evt.evt,
              },
              true
            );

            // enter new targer
            shape.fire(
              'dragenter',
              {
                type: 'dragenter',
                target: shape,
                evt: evt.evt,
              },
              true
            );
            previousShape = shape;
          } else {
            previousShape.fire(
              'dragover',
              {
                type: 'dragover',
                target: previousShape,
                evt: evt.evt,
              },
              true
            );
          }
        } else if (!previousShape && shape) {
          previousShape = shape;
          shape.fire(
            'dragenter',
            {
              type: 'dragenter',
              target: shape,
              evt: evt.evt,
            },
            true
          );
        } else if (previousShape && !shape) {
          previousShape.fire(
            'dragleave',
            {
              type: 'dragleave',
              target: previousShape,
              evt: evt.evt,
            },
            true
          );
          previousShape = undefined;
        }
      });
      stage.on('dragend', function (e) {
        var pos = stage.getPointerPosition();
        var shape = layer.getIntersection(pos);
        if (shape) {
          previousShape.fire(
            'drop',
            {
              type: 'drop',
              target: previousShape,
              evt: e.evt,
            },
            true
          );
        }
        previousShape = undefined;
        e.target.moveTo(layer);
      });

      stage.on('dragenter', function (e) {
        e.target.fill('green');
        text.text('dragenter ' + e.target.name());
      });

      stage.on('dragleave', function (e) {
        e.target.fill('blue');
        text.text('dragleave ' + e.target.name());
      });

      stage.on('dragover', function (e) {
        text.text('dragover ' + e.target.name());
      });

      stage.on('drop', function (e) {
        e.target.fill('red');
        text.text('drop ' + e.target.name());
      });
    </script>
  </body>
</html>
//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer