简体   繁体   中英

Relative Pointer Position

I need some help figuring out how to calculate the relative pointer position on a KineticJS stage.

In my case my stage changes position , offset , and scale .

Here is the demo: 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)
    };
}

I want the red circles to appear where the mouse is clicked. I'm running into problems when the stage has changed it's offset and scale.

Your calculation of the x and y coordinates are slightly off. This is a working demo of your example: http://jsfiddle.net/pCZzv/1/

Here is the relevant changed code:

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)
    };
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM