Jquery 可拖动弧HTML5

Jquery 可拖动弧HTML5,jquery,css,html,canvas,Jquery,Css,Html,Canvas,我在画布上画了一幅雷达图,图中的弧线是气泡。气泡是静止的。我需要把泡泡拖起来。html、css和javascripts在下面的链接中:我使用的一个类似技巧是让用户用鼠标拖动看不见的气泡 可见的物体不是真正的交互,而是跟随不可见物体的位置,除非它们在弧外 释放鼠标后,您可以将不可见的气泡重置为位于可见的气泡上。您可以使用此代码模式让用户拖动气泡(圆圈) 下面是一个演示: 首先,将所有圆定义保存在对象数组中: var circles=[]; circles.push({cx:10,cy:10,rad

我在画布上画了一幅雷达图,图中的弧线是气泡。气泡是静止的。我需要把泡泡拖起来。html、css和javascripts在下面的链接中:

我使用的一个类似技巧是让用户用鼠标拖动看不见的气泡

可见的物体不是真正的交互,而是跟随不可见物体的位置,除非它们在弧外


释放鼠标后,您可以将不可见的气泡重置为位于可见的气泡上。

您可以使用此代码模式让用户拖动气泡(圆圈)

下面是一个演示:

首先,将所有圆定义保存在对象数组中:

var circles=[];
circles.push({cx:10,cy:10,radius:20});
var dx=mouseX-circles[2].cx;
var dy=mouseY-circles[2].cy;
var rr=circles[2].radius*circles[2].radius;
var isInside= (dx*dx+dy*dy <= rr);
然后响应鼠标事件:

鼠标向下:

var circles=[];
circles.push({cx:10,cy:10,radius:20});
var dx=mouseX-circles[2].cx;
var dy=mouseY-circles[2].cy;
var rr=circles[2].radius*circles[2].radius;
var isInside= (dx*dx+dy*dy <= rr);
  • 保存当前鼠标位置(lastX/lastY)
  • 确定用户鼠标下方的圆圈(见下文)
  • 设置一个标志(isDown),指示用户正在按住鼠标(拖动开始)
鼠标移动:

var circles=[];
circles.push({cx:10,cy:10,radius:20});
var dx=mouseX-circles[2].cx;
var dy=mouseY-circles[2].cy;
var rr=circles[2].radius*circles[2].radius;
var isInside= (dx*dx+dy*dy <= rr);
  • 确定当前鼠标位置(mouseX/mouseY)
  • 将每个拖动的圆设置为新位置:cx=mouseX-lastX和cy=mouseY-lastY
  • 设置lastX=mouseX&lastY=mouseY
  • 重新绘制画布
mouseup和mouseout:

var circles=[];
circles.push({cx:10,cy:10,radius:20});
var dx=mouseX-circles[2].cx;
var dy=mouseY-circles[2].cy;
var rr=circles[2].radius*circles[2].radius;
var isInside= (dx*dx+dy*dy <= rr);
  • 清除isDown标志(拖动结束)
如何确定鼠标是否在圆内:

var circles=[];
circles.push({cx:10,cy:10,radius:20});
var dx=mouseX-circles[2].cx;
var dy=mouseY-circles[2].cy;
var rr=circles[2].radius*circles[2].radius;
var isInside= (dx*dx+dy*dy <= rr);
var dx=mouseX圆[2].cx;
var dy=鼠标圆[2].cy;
var rr=圆[2]。半径*圆[2]。半径;

var isInside=(dx*dx+dy*dy这里是jsfiddle链接:我不知道是谁做了负面标记。我也不知道他/她有什么问题。