1

ここでjsfiddleの例を参照してください

ダイアグラムを拡大してパンし、ダイアグラムの特定の場所にピンをドロップしようとしていますが、キネティック スケーリングがどのように機能するかわかりません。これは、表示ポートに対するドロップ座標を計算する必要がある場合の問題です。

デモはスケール = 1 で正常に動作しますが、ホイール マウスを使用してスクロール インまたはアウトすると、ピンが間違った場所にドロップされます。

間違った関数は次のとおりです。

function getRelativePos(shape,stage) {
    var mousePos = stage.getUserPosition();
    var pos = shape.getAbsolutePosition();
    var size = shape.getSize();
    var scale = shape.getScale();

    var x = (mousePos.x - pos.x) * scale.x ;
    var y = (mousePos.y - pos.y) * scale.y ;
    return {
        x:x,
        y:y
    };    
}
4

1 に答える 1

1

機能を修正しました:

function getRelativePos(shape,stage) {
    var mousePos = stage.getUserPosition();
    var pos = shape.getAbsolutePosition();
    var scale = shape.getScale();

       // return relative mouse position
    var x = (mousePos.x - pos.x) / scale.x ;
    var y = (mousePos.y - pos.y) / scale.y ;
    return {
        x:x,
        y:y
    };    
}

http://jsfiddle.net/lavrton/B8UDq/4/

于 2013-03-12T01:38:16.323 に答える