1
我只是在学习Kinetic.js,我非常喜欢它使用HTML5 <canvas>
元素的过程。如何在可拖动图层顶部单击时获得精确的指针位置?
我有一个大于“舞台”(使用动力学说法)但可拖动的大图层。拖动功能似乎以两种不同方式干扰点击处理程序:某些单击不会注册;和那些做的,只有当层位于原始位置时,位置才是准确的。
Here's a fiddle显示我遇到的问题。在我的实际代码中,底层实际上是一个图像。
我只是在学习Kinetic.js,我非常喜欢它使用HTML5 <canvas>
元素的过程。如何在可拖动图层顶部单击时获得精确的指针位置?
我有一个大于“舞台”(使用动力学说法)但可拖动的大图层。拖动功能似乎以两种不同方式干扰点击处理程序:某些单击不会注册;和那些做的,只有当层位于原始位置时,位置才是准确的。
Here's a fiddle显示我遇到的问题。在我的实际代码中,底层实际上是一个图像。
layer.on ('click', function(e) {
console.log(e);
var mousePos = stage.getMousePosition(); // mouse position relative to stage
var xclick = mousePos.x;
var yclick = mousePos.y;
var circle = new Kinetic.Circle({
x: xclick - layer.getX(), // since position is relative to stage, adjust by layer X
y: yclick - layer.getY(), // same as above
radius: 25,
fill: 'red',
opacity: 0.5
});
layer.add(circle);
stage.draw(); // redraw the stage immediately
});
,似乎没有注册任何点击是由于其覆盖单击事件可拖动事件触发。
太棒了! getX()和getY()正是我所期待的,但在文档中找不到。我可能会实现移动和编辑的'模式',所以我可能不必担心争论的事件处理程序。非常感谢。 – 2013-02-12 23:29:41
我不完全确定为什么动力学复杂化获取/修改x/y坐标,但它确实如此。我只知道这一点,因为我今天花了一些时间在Kinetic上快速编程一个突破克隆。 :d – Shmiddty 2013-02-12 23:35:12