[英]How do you make an if-statement permanent?
我对编程很陌生,作为一个帮助我改进JavaScript的迷你项目,我正在制作太阳镜。 背景开始呈蓝色,在某个时刻,背景必须变黑,我完成了大部分工作,我只是不知道如何使它永远变黑。
noStroke();
// Original y position of the sun
var sunPosition = 50;
function draw() {
// Draw sky
background("skyblue");
// Move the sun down
sunPosition = sunPosition + 1;
if(sunPosition === 348){
background("black");
}
// Draw sun
fill("yellow");
ellipse(350,sunPosition,50,50);
// Draw grass
fill("green");
rect(0,300,400,100);
}
您可以尝试更改此行: if(sunPosition === 348){
对此: if(sunPosition >= 348){
获得理想的结果。
这听起来像是一种很好的学习方式。 荣誉。
我假设您发布的代码在某种循环中运行。 循环的每次迭代都会增加sunPosition
。
但是,您只检查sunPosition
是否完全等于348
。
相反,检查它是否大于或等于348
。
if(sunPosition >= 348){
background("black");
}
或者,你可以在某种程度上停止循环。
if(sunPosition === 348){
background("black");
stopLoopSomehow();
}
您可以创建一个可变变量(如sunPosition
)来存储太阳是否已经设置:
// Original y position of the sun
var sunPosition = 50;
// Original color of sky
var skyColor = "skyblue";
function draw() {
// Move the sun down
sunPosition = sunPosition + 1;
// check for sunset
if (sunPosition === 348) {
skyColor = "black";
}
// Draw sky
background(skyColor);
// Draw sun
fill("yellow");
ellipse(350,sunPosition,50,50);
// Draw grass
fill("green");
rect(0,300,400,100);
}
或者(并且更健壮,因为您不需要完全按照更改条件),是根据太阳位置计算每次draw
调用的天空颜色:
function draw() {
// Move the sun down
sunPosition = sunPosition + 1;
// Draw sky
if (sunPosition >= 348) {
background("skyblue");
} else {
background("black");
}
// Draw sun
fill("yellow");
ellipse(350,sunPosition,50,50);
// Draw grass
fill("green");
rect(0,300,400,100);
}
使用if
/ else
,你会明白为什么要使用>=
。
请记住,if语句只是运行一个检查,如果括号内的检查返回true,则执行它的块,否则它继续。
所以用代码:
if(sunPosition === 348){
background("black");
}
只有当sunPosition正好等于348时,才会返回true。所以让我们进一步研究。
===比较相当于“严格等于”
这意味着左边的值必须与每个方面的右边的值相同。
即
1 === 1 // True
1 === true // False
1 === "1" // False
1 === 2 // False
==比较等于“等于”
这意味着左边的值应该与右边的值相同,但它不是严格的比较,这意味着类型可以不同。
1 == 1 // True
1 == true // True
1 == "1" // True
1 == 2 // False
因此,假设您的sunPosition正在逐步移动,无论是通过循环还是通过按钮单击,sunPosition将在一个特定点仅= = 348。 一旦它不相等,那么块将继续运行。
使用该逻辑,将代码更改为:
if(sunPosition >= 348){
background("black");
}
您正在使用大于或等于比较。
因此,只要sunPosition大于或等于348,比较将返回true,并且后面的语句中的代码将运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.