KineticJS鼠标图像位置

时间:2017-01-13 06:52:18

标签: mouseevent kineticjs

我有这样的图像

var image = new Kinetic.Image({
            x : x,
            y : y,
            width : 1000,
            height :100,
            image : image,
});

如何根据图像获取鼠标位置。 根据这个例子,我可以获得位置Object {0,0}〜{100,1000}

我只找到了一个api stage.getPointerPosition()

1 个答案:

答案 0 :(得分:0)

如果你想在click上获得鼠标位置,那么你可以这样做:

image.on('click', function(){
    var mousePos = youStage.getPointerPosition();
    var p = { x: mousePos.x, y: mousePos.y }; // p is a clone of mousePos
    var r =  image.getAbsoluteTransform().copy().invert().point(mousePos);
});

请查看下面的工作示例,尽管它使用KonvaJS,但概念是相同的。而且你也应该开始使用Konva,因为它维护得很好并且有文档证明。



<!DOCTYPE html>
<html>

<head>
  <script src="https://cdn.rawgit.com/konvajs/konva/1.4.0/konva.min.js"></script>
  <meta charset="utf-8">
  <title>Konva Image 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();
    var imageObj = new Image();
    imageObj.onload = function() {
      var yoda = new Konva.Image({
        x: 50,
        y: 50,
        image: imageObj,
        width: 106,
        height: 118
      });
      yoda.on('click', function() {
        var mousePos = stage.getPointerPosition();
        var p = {
          x: mousePos.x,
          y: mousePos.y
        }; // p is a clone of mousePos
        var r = yoda.getAbsoluteTransform().copy().invert().point(mousePos);
        console.log(r);
      });
      // add the shape to the layer
      layer.add(yoda);
      // add the layer to the stage
      stage.add(layer);
    };
    imageObj.src = 'https://upload.wikimedia.org/wikipedia/en/thumb/9/9b/Yoda_Empire_Strikes_Back.png/220px-Yoda_Empire_Strikes_Back.png';
  </script>
</body>

</html>
&#13;
&#13;
&#13;

相关问题