javascript - 通过单击增加变量

标签 javascript canvas

我有一个 Canvas ,我想通过单击来增加变量电压。问题是,当我单击 - 变量时,变量会随机增加一些。我需要点击一下 = 变量加一。

代码如下:

var canvas = document.getElementById("diodeCircuit");
var ctx = canvas.getContext("2d");
var voltage = 0;

function runCanvas() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  changeVoltage();
}

function changeVoltage() {
  window.addEventListener("click", doMouseClick, false);

  function doMouseClick(event) {
    x = event.pageX - canvas.offsetLeft;
    y = event.pageY - canvas.offsetTop;
    if (x >= 0 && x <= 1000 && y >= 0 && y <= 400) {
      voltage += 1;
    }
  }

  ctx.fillStyle = "#000";
  ctx.textAlign = "center";
  ctx.font = "30px sans-serif";
  ctx.fillText(voltage + " V", 500, 50);
}

setInterval(runCanvas, 100);

链接到 codepen 上的项目

最佳答案

setInterval(runCanvas, 100);

这会每秒调用您的 runCanvas 函数 10 次 - 它正在调用 doMouseClick 函数,该函数每秒创建 10 个点击监听器,通过单击您可以触发每个监听器听众。

移动这个:

window.addEventListener("click", doMouseClick, false);

在间隔函数回调之外,这样您最终只会得到一个点击监听器。

关于javascript - 通过单击增加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299174/

相关文章:

javascript - Jquery 脚本在 IE 7-8 中不起作用

javascript - 我正在制作浏览器内的单色 LED 显示屏。我应该使用 <canvas> 还是 <div> 来显示 LED?

JavaScript/HTML5 - 获取 Canvas 对象文本?

JavaFX Canvas : Draw a shape exclusively within another shape

html - html中 "100"和 "100px"的区别

Javascript 四舍五入到最接近的整数

javascript - 如何允许 Chrome 访问本地主机上的相机?

javascript - grunt-processhtml 正确使用

javascript - X 和 Y 坐标的简单笛卡尔平面,原点位于中心

javascript - 使用按位运算符(JSFeat)修改图像像素