0

ドラッグ可能なステージがあり、そこに新しいシェイプ (ダブルクリック / タップ) を追加します。今私の問題は、ステージをドラッグしてその後にいくつかの新しいオブジェクトを作成すると、オブジェクトがステージの間違った位置に作成されることです。これまでのコードは次のとおりです(抜粋):

$('#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 を作成して、何が問題なのかを示しました。ステージをダブルクリック(/タップ)するだけです。次に、ステージをドラッグします。次に、ダブルクリック => 間違った位置: http://jsfiddle.net/4vfBY/7/

誰かが私をここで助けてくれたら、それは素晴らしいことです. 私の問題は、xPos と yPos を間違って定義することにあると思いますが、それを行う方法についてより良いアイデアがありません。

よろしく、 ドミニク

4

1 に答える 1

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/

于 2013-07-10T12:31:12.780 に答える