Kineticjs和hammerjs:拖动舞台时正确更新Mouseposition

时间:2013-07-10 09:43:18

标签: javascript kineticjs hammer.js

所以,我有一个可拖动的舞台,我添加了新的形状(双击/ -tap)。现在我的问题是,当我拖动舞台并在其后创建一些新对象时,我的对象在舞台上的错误位置创建。这是我的代码 - 迄今为止(摘录):

$('#toolbox_container').hammer().on('doubletap', function(e) {
        //console.log('x:' + e.gesture.center.pageX + ' y: ' + e.gesture.center.pageY);
        var xPos = e.gesture.center.pageX - this.offsetLeft;
        var yPos = e.gesture.center.pageY - this.offsetTop;
        // call addnode with position of tap/mouse
        addNode(xPos, yPos);
    });

在这里添加更多行之前,我做了这个简化的jsfiddle以显示问题所在。只需在舞台上双击(/点击)即可。然后拖动舞台。然后再次,doubleclick =>错误的立场:http://jsfiddle.net/4vfBY/7/

如果有人可以帮助我,那就太好了。我认为我的问题在于定义xPos和yPos是错误的,但我对如何做到这一点没有更好的想法。

祝你好运, 多米尼克

1 个答案:

答案 0 :(得分:1)

所以,现在就开始工作吧。我所要做的就是在拖动后从舞台上获取X和Y坐标,然后将它们添加到我的xPos / yPos中,如下所示:

$('#toolbox_container').hammer().on('doubletap', function (e) {
    stageX = stage.getX();
    stageY = stage.getY();
    var xPos = e.gesture.center.pageX - this.offsetLeft - stageX; //apply stageX
    var yPos = e.gesture.center.pageY - this.offsetTop - stageY; //apply stageY
    // call addnode with position of tap/mouse
    addNode(xPos, yPos);
});

您可以在此处查看有效的演示:http://jsfiddle.net/s9PAD/1/