【发布时间】:2016-06-28 03:14:52
【问题描述】:
我正在尝试使用 html5 画布和纯 javascript 构建 simon 游戏。我已经设法使用 html5 画布获得了 simon 游戏 UI。我的下一步是让四个组件随机点亮。我不确定 html5 画布是否可以做到这一点,或者我的方法可能是错误的。任何正确方向的提示都会有很大帮助。我的代码如下 codepen 链接:http://codepen.io/anon/pen/QEdPRN?editors=1010
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
//bigger circle
ctx.beginPath();
ctx.arc(235,230,140,0,2*Math.PI);
ctx.fillStyle = '#000';
ctx.fill();
ctx.stroke();
//smaller circle
ctx.beginPath();
ctx.arc(235,230,60,0,2*Math.PI);
ctx.fillStyle = '#fff';
ctx.fill();
ctx.stroke();
//draw the four arcs
var x = [240,240,230,230];
var y = [240,225,225,240];
var start = [0,1.5*Math.PI,1*Math.PI,0.5*Math.PI];
var end = [0.5*Math.PI,0,1.5*Math.PI,1*Math.PI];
var color = ["blue","red","green","yellow"];
var draw = function (a,b,c,d,e) {
ctx.beginPath();
ctx.arc(a,b,90,c,d);
ctx.lineWidth = 50;
ctx.strokeStyle = e;
ctx.stroke();
}
function drawSimon() {
for(var i=0;i<4;i++){
draw(x[i],y[i],start[i],end[i],color[i]);
}
}
drawSimon();
【问题讨论】:
-
选择一种随机颜色,使用 requestAnimationFrame 进行渐变动画或使用计时器进行一次性更改。你被困在哪里了?
-
我应该用随机颜色重新绘制四个组件吗?我知道使用 setInterval 可以实现一次性更改,但我不确定如何显示一次随机颜色,然后恢复为原始颜色。
-
每当您更改颜色数组中的颜色时,再次调用
drawSimon()以覆盖当前显示的图像。您可能想用clearRect(...)清除画布。
标签: javascript html canvas