为什么代码 2 没有在我的浏览器上生成 10 行圆圈?但是代码 1 产生了 10x10 行 x 列的半径为 10 的圆的输出
Why is code 2 not producing 10 rows of circles on my browser? But the code 1 is producing the output of 10x10 rowsxcolumns of circles with radius 10
代码 1 有效,给出了 10 条半径为 10 的圆。
代码 2 没有按预期工作,它只给出了一行半径为 10 的圆。
我认为逻辑是正确的,但在纸质 js 文档方面,我仍然很可能遗漏了一些东西。
canvas {
width: 100%;
background-color: black;
}
body,
html {
height: 100%;
margin: 0;
}
<!DOCTYPE html>
<html>
<head>
<title>Patapat Sound Project</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.9.18/paper-full.min.js"></script>
<script type="text/paperscript" canvas="canvas">
//Code 1
for(var x = 0; x<1000; x += 100){
for(var y = 0; y<1000; y += 100){
var circle = new Path.Circle(new Point(x, y), 10);
circle.fillColor = 'red';
}
}
//Code 2
var x = 10;
var y = 10;
while(x!=1010 && y!= 1010){
var circle = new Path.Circle(new Point(x,y), 10);
circle.fillColor = 'orange';
if(x==1010){
x=10;
y+=100;
}
else{
x+=100;
}
}
</script>
</head>
<body>
<canvas id="canvas" resize></canvas>
</body>
</html>
这其实是你的逻辑有问题
当 x 值为 1010
.
时,while
循环在第 10 次迭代后停止
在循环中进行检查之前,您必须增加 x。
这是正确的代码:
//Code 2
var x = 10;
var y = 10;
while (x != 1010 && y != 1010) {
console.log(x, y);
var circle = new Path.Circle(new Point(x, y), 10);
circle.fillColor = 'orange';
// increment x every time
x += 100;
// then check if it will break the loop
if (x == 1010) {
x = 10;
y += 100;
}
}
代码 1 有效,给出了 10 条半径为 10 的圆。
代码 2 没有按预期工作,它只给出了一行半径为 10 的圆。
我认为逻辑是正确的,但在纸质 js 文档方面,我仍然很可能遗漏了一些东西。
canvas {
width: 100%;
background-color: black;
}
body,
html {
height: 100%;
margin: 0;
}
<!DOCTYPE html>
<html>
<head>
<title>Patapat Sound Project</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.9.18/paper-full.min.js"></script>
<script type="text/paperscript" canvas="canvas">
//Code 1
for(var x = 0; x<1000; x += 100){
for(var y = 0; y<1000; y += 100){
var circle = new Path.Circle(new Point(x, y), 10);
circle.fillColor = 'red';
}
}
//Code 2
var x = 10;
var y = 10;
while(x!=1010 && y!= 1010){
var circle = new Path.Circle(new Point(x,y), 10);
circle.fillColor = 'orange';
if(x==1010){
x=10;
y+=100;
}
else{
x+=100;
}
}
</script>
</head>
<body>
<canvas id="canvas" resize></canvas>
</body>
</html>
这其实是你的逻辑有问题
当 x 值为 1010
.
时,while
循环在第 10 次迭代后停止
在循环中进行检查之前,您必须增加 x。
这是正确的代码:
//Code 2
var x = 10;
var y = 10;
while (x != 1010 && y != 1010) {
console.log(x, y);
var circle = new Path.Circle(new Point(x, y), 10);
circle.fillColor = 'orange';
// increment x every time
x += 100;
// then check if it will break the loop
if (x == 1010) {
x = 10;
y += 100;
}
}