这段代码是如何画出三个圆圈的
How does this code draw out three circles?
我用这段代码来改进我的原始版本。它是一个自动交通信号灯,绘制三个圆圈并模拟英国交通信号灯的红色、红色+黄色、绿色序列。问题是我不知道它是如何画出三个圆圈的。我知道 drawLight() 绘制它们,但是告诉它在哪里绘制它们的代码在哪里?可以向我解释一下,谢谢。
<script>
var c = document.createElement('canvas'),
ctx = c.getContext('2d');
c.width = 150;
c.height = 300;
document.body.appendChild(c);
var cycle = 0,
colours = {
red: "#cc0000",
yellow: "#cccc00",
green: "#00cc00",
off: "#333333"
};
function drawLight(id,colour) {
// avoid repetition, use a function!
ctx.fillStyle = colours[colour];
ctx.beginPath();
ctx.arc(95, 50 + 100*id, 40, 0, Math.PI*2);
ctx.fill();
ctx.stroke();
}
function changelight(){
ctx.stokeStyle = "black";
ctx.lineWidth = 3;
// top light: red if cycle = 0 or 1, off otherwise
drawLight(0, cycle <= 1 ? 'red' : 'off');
// middle light: yellow if cycle = 3 (and 1 for UK lights, we have red+yellow before green), off otherwise
drawLight(1, cycle == 1 || cycle == 3 ? 'yellow' : 'off');
// bottom light: green if cycle = 2
drawLight(2, cycle == 2 ? 'green' : 'off');
// increment cycle
cycle = (cycle + 1) % 4;
}
// start the magic
setInterval(changelight,1000);
</script>
<br><br>
<button onclick="changelight()">Click</button>
请参阅 https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/arc
ctx.beginPath();
// x y radius startAngle, endAngle
ctx.arc(95, 50 + 100*id, 40, 0, Math.PI*2);
ctx.fill();
ctx.stroke();
使用 HTML5 Canvas 元素 (http://www.w3schools.com/html/html5_canvas.asp)。弧函数用于绘制圆圈。请参阅: http://www.w3schools.com/tags/canvas_arc.asp
相关文章:
- 将文本字段限制为三个数字
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- 如何通过三个不同的字段对javascript数组进行排序
- JS 字段验证 - 循环遍历对象,每个字段有三个数据注意事项
- Javascript UK 使用三个输入字段进行排序代码验证
- 如何组合来自三个不同字段的值,并仅在所有三个字段都填充值时才将其设置为隐藏字段
- JQuery 将一段代码应用于多个元素
- 如果三个特定下拉字段中的三个全部为空,则禁用提交按钮
- 如何重构这段代码?我有 3 个标签需要在列表中重新选择
- 这段代码是如何画出三个圆圈的
- 对三个文本字段求和,其值由 jqueryui 滑块控制
- Jquery - 键入事件检查三个字段中的输入值
- JavaScript代码中的三个点
- 将第三个步骤添加到我的向导步骤Jquery代码中
- 将两个对象与多个节点组合在一起——为什么这段代码有效
- 如何使用日期选择器从第三个文本框中的文本字段中求出天数
- 如果没有jQuery,javascript如何检查多个ajax调用是否已经完成,一旦完成,就执行一段代码
- 如何遍历表并在三个不同的数组中收集这些字段的值
- AngularJS,如何使两个输入字段'每当它们动态变化时,s的和总是等于第三个输入
- 三个js代码提示/自动完成