javascript - 如何每隔 n 秒更改 Canvas 上圆圈的颜色?

标签 javascript html5-canvas

影子的大小怎么会每 n 秒改变一次?我猜你必须不断地创建一个新的圈子并消除以前的圈子?这将如何完成?还有,有没有更好的办法?

function main() {
  var canvas = document.getElementsByTagName("CANVAS")[0],
      ctx = canvas.getContext("2d");
  
  canvas.width = window.innerWidth;
  canvas.height = document.documentElement.scrollHeight;
  var cW = canvas.width,
      cH = canvas.height;
  
  ctx.fillStyle = "#000";
  ctx.fillRect(0, 0, cW, cH);
  ctx.fill();
  
  ctx.beginPath();
  ctx.fillStyle = "#FFF";
  ctx.shadowBlur = 5;
  ctx.shadowColor = "#FFF";
  ctx.arc(cW/2, cH/2, 50, 0, 2 * Math.PI, false);
  ctx.fill();
  ctx.closePath();
}

window.addEventListener("load", main);
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <canvas></canvas>
</body>
</html>

最佳答案

创建一个 setInterval 和一个颜色数组。使用 Math.random 随机选择任何颜色。 修改 main 函数以接受颜色作为两个参数。

function main(bckColor, circleColor) {
  var canvas = document.getElementsByTagName("CANVAS")[0],
    ctx = canvas.getContext("2d");
  if (canvas.height) {
    canvas.height = 0;
  }
  canvas.width = window.innerWidth;
  canvas.height = document.documentElement.scrollHeight;
  var cW = canvas.width,
    cH = canvas.height;
  
  ctx.fillStyle = bckColor || "#000";
  //ctx.fillStyle = "red" ;
  ctx.fillRect(0, 0, cW, cH);
  ctx.fill();

  ctx.beginPath();
  ctx.fillStyle = circleColor || "#FFF";
  ctx.shadowBlur = 5;
  ctx.shadowColor = "#FFF";
  ctx.arc(cW / 2, cH / 2, 50, 0, 2 * Math.PI, false);
  ctx.fill();
  ctx.closePath();
}
var colorArray = ['red', 'green', 'yellow', 'blue', 'pink', 'brown', 'orange']
var changeColor = setInterval(function() {

  let bckColor = colorArray[Math.floor(Math.random() * 7 + 1)];
  let circleColor = colorArray[Math.floor(Math.random() * 7 + 1)];
  main(bckColor, circleColor)

}, 2000)
window.addEventListener("load", main);
<canvas></canvas>

关于javascript - 如何每隔 n 秒更改 Canvas 上圆圈的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49992994/

相关文章:

javascript - iframe正在添加标签,需要删除它们

Javascript 插件在 WordPress 中附加重复数据

php - 如何在 php 中对大 ajax 响应应用条件?

javascript - Chrome 扩展和本地存储

javascript - ToggleClass 和 RemoveClass 不起作用

javascript - HTML5游戏对象及分享方法

javascript - 如何更改 Canvas 上圆圈的不透明度

javascript - 为多个图像添加 HTML5 Canvas 黑白效果

html5 Canvas 未显示完整图像

javascript - 学习如何使用 HTML5 canvas 实际绘图