4

KineticJSステージで相対ポインター位置を計算する方法を理解するのに助けが必要です。

私の場合、ステージは位置オフセットスケールを変更します。

デモは次のとおりです:http://jsfiddle.net/pCZzv/

function getRelativePointerPosition() {
    var pointer = stage.getPointerPosition();
    var pos = stage.getPosition();
    var offset = stage.getOffset();
    var scale = stage.getScale();

    return {
        x : ((pointer.x - pos.x + offset.x) / scale.x),
        y : ((pointer.y - pos.y + offset.y) / scale.y)
    };
}

マウスがクリックされた場所に赤い円を表示したい。ステージのオフセットとスケールが変更されたときに問題が発生します。

4

1 に答える 1

6

xy座標の計算は少しずれています。これはあなたの例の実用的なデモです:http://jsfiddle.net/pCZzv/1/

関連する変更されたコードは次のとおりです。

function getRelativePointerPosition() {
    var pointer = stage.getPointerPosition();
    var pos = stage.getPosition();
    var offset = stage.getOffset();
    var scale = stage.getScale();

    return {
        x : ((pointer.x / scale.x) - (pos.x / scale.x) + offset.x),
        y : ((pointer.y / scale.y) - (pos.y / scale.y) + offset.y)
    };
}
于 2013-03-27T14:06:40.490 に答える