我对编程还很陌生,作为一个微型项目,它可以帮助我更好地使用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);
}
答案 0 :(得分:3)
这听起来像是一种学习的好方法。荣誉。
我假设您发布的代码正在某种循环中运行。循环的每次迭代都会使sunPosition
递增。
但是,您仅检查sunPosition
等于348
。
相反,请检查它是否大于或等于348
。
if(sunPosition >= 348){
background("black");
}
或者,您可以通过某种方式在此处停止循环。
if(sunPosition === 348){
background("black");
stopLoopSomehow();
}
答案 1 :(得分:2)
您可以尝试更改此行:
if(sunPosition === 348){
对此:
if(sunPosition >= 348){
以获得所需的结果。
答案 2 :(得分:2)
您可以创建一个可变变量(例如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
,您就会清楚为什么要使用>=
。
答案 3 :(得分:1)
请记住,如果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,并且下面语句中的代码将运行。