Javascript HTML5-跟踪画布上的圈数

Javascript HTML5-跟踪画布上的圈数,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,有没有办法统计画布上绘制的形状数量 我用画笔在画布上画了一串圆圈,我想找到一种方法来计算有多少人在场 var mainCanvas = document.getElementById('draw1'); mainContext = mainCanvas.getContext('2d'); var CircleBrush = { iPrevX: 0, iPrevY: 0, // initialization function init: function () { mainConte

有没有办法统计画布上绘制的形状数量 我用画笔在画布上画了一串圆圈,我想找到一种方法来计算有多少人在场

var mainCanvas = document.getElementById('draw1');
mainContext = mainCanvas.getContext('2d');

var CircleBrush = {

iPrevX: 0,
iPrevY: 0,

// initialization function
init: function () {
    mainContext.globalCompositeOperation = 'source-over';
    mainContext.lineWidth = 1;
    mainContext.strokeStyle = '#4679BD';
    mainContext.lineWidth = 1;
    mainContext.lineJoin = 'round';

},

startCurve: function (x, y) {
    this.iPrevX = x;
    this.iPrevY = y;
    mainContext.fillStyle = '#4679BD';
},

draw: function (x, y) {
    var iXAbs = Math.abs(x - this.iPrevX);
    var iYAbs = Math.abs(y - this.iPrevY);
    var rad = 6;

    if (iXAbs > 10 || iYAbs > 10) {
        mainContext.beginPath();
        mainContext.arc(this.iPrevX, this.iPrevY, rad, Math.PI * 2, false);
        mainContext.fill();
        mainContext.stroke();
        this.iPrevX = x;
        this.iPrevY = y;

       }
    }
};
var circleCounter = [0];
mainContext.font = '21pt Arial';
mainContext.fillStyle = '#262732';
mainContext.textBaseline = 'top';
mainContext.fillText(circleCounter, 20, 20);
CircleBrush.init();
$('#draw1').mousedown(function (e) { // mouse down handler
cMoeDo = true;
var canvasOffset = $('#draw1').offset();
var canvasX = Math.floor(e.pageX - canvasOffset.left);
var canvasY = Math.floor(e.pageY - canvasOffset.top);
CircleBrush.startCurve(canvasX, canvasY);
circleCounter ++1;
 });

$('#draw1').mouseup(function (e) { // mouse up handler
 cMoeDo = false;
});

 $('#draw1').mousemove(function (e) { // mouse move handler
  if (cMoeDo) {
    var canvasOffset = $('#draw1').offset();
    var canvasX = Math.floor(e.pageX - canvasOffset.left);
    var canvasY = Math.floor(e.pageY - canvasOffset.top);
    CircleBrush.draw(canvasX, canvasY);
    circleCounter ++1;
 }

})
演示小提琴


提前感谢

您需要清除计数器的空间并重新绘制计数。为了做到这一点,我将计数器和文本绘图放在绘图函数中,如下所示

draw: function (x, y) {        
    var iXAbs = Math.abs(x - this.iPrevX);
    var iYAbs = Math.abs(y - this.iPrevY);
    var rad = 6;  

    if (iXAbs > 10 || iYAbs > 10) {
        mainContext.beginPath();
        mainContext.arc(this.iPrevX, this.iPrevY, rad, Math.PI*2, false);
        mainContext.fill();
        mainContext.stroke();
        this.iPrevX = x;
        this.iPrevY = y;
        circleCounter ++;
        mainContext.clearRect(0,0,50,25);
        mainContext.fillText(circleCounter, 5, 5);           
    }
}

(我将计数器移动了一些,以便有更多的空间放置点)

您需要清除计数器的空间并重新绘制计数。为了做到这一点,我将计数器和文本绘图放在绘图函数中,如下所示

draw: function (x, y) {        
    var iXAbs = Math.abs(x - this.iPrevX);
    var iYAbs = Math.abs(y - this.iPrevY);
    var rad = 6;  

    if (iXAbs > 10 || iYAbs > 10) {
        mainContext.beginPath();
        mainContext.arc(this.iPrevX, this.iPrevY, rad, Math.PI*2, false);
        mainContext.fill();
        mainContext.stroke();
        this.iPrevX = x;
        this.iPrevY = y;
        circleCounter ++;
        mainContext.clearRect(0,0,50,25);
        mainContext.fillText(circleCounter, 5, 5);           
    }
}

(我将计数器移动了一些,以便有更多的空间放置点)

您可以将计数器放在一个单独的
div
中,只需更新文本即可


0
绘制圆时返回true,否则返回false

draw:函数(x,y){
/* ... */
如果(iXAbs>10 | | iYAbs>10){
/* ... */
返回true;
}
返回false;
}
根据需要增加并显示

if(画圈画(画布,画布)){
++循环计数器;
$(“#计数器”).text(循环计数器);
}

请参见修改后的您可以将计数器放在单独的
div
中,只需更新文本即可


0
绘制圆时返回true,否则返回false

draw:函数(x,y){
/* ... */
如果(iXAbs>10 | | iYAbs>10){
/* ... */
返回true;
}
返回false;
}
根据需要增加并显示

if(画圈画(画布,画布)){
++循环计数器;
$(“#计数器”).text(循环计数器);
}

请参见修改后的

当您绘制每个圆圈时,将一个添加到计数中。当您绘制每个圆圈时,将一个添加到计数中。这很完美-太多的咖啡没有足够的睡眠会让您的大脑陷入混乱。这很完美-太多的咖啡没有足够的睡眠会让您的大脑陷入混乱感谢您仔细观察。谢谢您仔细观察。