Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取通过拖动形成的线的长度_Javascript_Html_Kineticjs - Fatal编程技术网

Javascript 获取通过拖动形成的线的长度

Javascript 获取通过拖动形成的线的长度,javascript,html,kineticjs,Javascript,Html,Kineticjs,我想计算阻力的长度。ie通过在html画布上将光标从一个点拖动到另一个点而创建的线的长度。如何在kineticjs中实现它?? 从dragstart到dragend的ie。我不知道动力学,但是使用jquery看起来像这样: var telemetry = { $target: null, startPosition: {x:0,y:0}, distance: 0, getMousePosition: function(event){ var pos

我想计算阻力的长度。ie通过在html画布上将光标从一个点拖动到另一个点而创建的线的长度。如何在kineticjs中实现它??
从dragstart到dragend的ie。

我不知道动力学,但是使用jquery看起来像这样:

var telemetry = {
    $target: null,
    startPosition: {x:0,y:0},
    distance: 0,
    getMousePosition: function(event){
        var position = {
            x: event.pageX - this.$target.offset().left,
            y: event.pageY - this.$target.offset().top
        }
        return position;
    },
    getDistance: function(startPosition, endPosition){
        //find distance in each x and y directions
        var dx = endPosition.x - startPosition.x;
        var dy = endPosition.y - startPosition.y;

        // use pythagorean theorem
        return Math.sqrt((dx*dx) + (dy*dy));
    },
    onMouseDown: function(event){
        this.startPosition = this.getMousePosition(event);
    },
    onMouseUp: function(event){
        this.distance = this.getDistance(this.startPosition, this.getMousePosition(event));
    }
}

telemetry.$target = $('#myCanvas');

telemetry.$target.mousedown(function(event){
    telemetry.onMouseDown(event);
}).mouseup(function(event){
    telemetry.onMouseUp(event);
    alert('you dragged ' + telemetry.distance + 'px');
});

在kineticjs中,您可以执行以下操作:

var point1;
var point2;
layer.on('dragstart', function(){
     point1 = stage.getUserPosition();
});
layer.on('dragend', function(){
     point2 = stage.getUserPosition();
     var xDist = point2.x - point1.x;
     var yDist = point2.y - point1.y;
     alert( Math.sqrt((xDist*xDist) + (yDist*yDist)) ); // this pops up a message of the length of the line, you could just do a return or assign a value to something
     //distance = Math.sqrt((xDist*xDist) + (yDist*yDist)); //alternative
})