如何获得点击形状的位置(KineticJS)

时间:2013-02-28 06:38:07

标签: javascript html5-canvas kineticjs

我在这一层有一个可拖动的图层和一个大的透明背景。我想在用户点击的位置上准确添加文本。当我没有拖动图层时,一切都还可以,但是当我拖动它时,文本会添加到我不想要的地方。因为event.x和event.y不是点击形状区域的x和y。必须转换坐标。但我不知道如何获得转换矢量。

    plot = {};
    plot.stage = new Kinetic.Stage({width: 500, height:500,
      container: 'abc',
      'draggable': true});
    plot.layer = new Kinetic.Layer();
    plot.stage.add(plot.layer);
    plot.background = new Kinetic.Rect({
          x: -1000,
          y: -1000,
          width: 2000,
          height: 2000,
          fill: "#000000",
          opacity: 0.05,
          type: 'blank'
    });
    plot.layer.add(plot.background);

    plot.background.on('click', function(e) {
       e.x;
       e.y;
       // e.x and e.y are not true after dragging stage
    });

2 个答案:

答案 0 :(得分:1)

当使用KineticJS时,你想避免使用event.x和event.y,因为KineticJS已经有了获取位置的方法。

   var position = stage.getUserPosition();  // this returns an object like {x: 100, y: 140}

此外,检查您要将文本添加到哪个图层。另外,请显示一些代码。

答案 1 :(得分:0)

你需要绝对设置元素的位置。使用此:

plot.setAbsolutePosition(stage.getUserPosition());