我在简单的while循环中遇到了困难。
size(500,500);
background(255);
rectMode(CENTER);
noCursor();
int x1 = mouseX;
int y1 = mouseY;
int count = 0;
fill(0);
rect(250,250,50,50); //this is drawn
while (count == 0); {
fill(0);
rect(250,250,50,50); //this is not
}
它写在Processing中。 我没有在while循环中绘制任何内容,而后面的任何内容都不是。绘制之前的任何东西,而不是循环。我在这里缺少什么?
答案 0 :(得分:0)
你的while循环中有一个拼写错误,你有;
结束while循环并且不会执行它,用你的while循环替换:
while (count == 0) {
fill(0);
rect(250,250,50,50); //this is not
}
在处理过程中你不应该像你一样创造无限循环,你可以编写一个draw()
函数来做类似的事情:
void draw() {
fill(0);
rect(250,250,50,50); //this is not
}
这需要伴随setup()
功能,设置功能只在程序开头运行一次:
int x1,y1;
void setup(){
size(500,500);
background(255);
rectMode(CENTER);
x1 = mouseX;
y1 = mouseY;
fill(128);
rect(250,250,50,50); //this is drawn
}
void draw(){
fill(0);
rect(250,250,50,50); //this is not
}
也许您是处理新手,但您应该考虑使用此布局,因为它是框架的核心。
答案 1 :(得分:0)
另一个答案是对的。您的while
循环以;
分号结尾,因此它不会继续循环而不执行任何操作。
我们一直在使用draw()函数,但这次需要使用我们自己的循环将对象绘制到屏幕上。为什么我不应该使用无限循环?它没有完成同样的事情吗?
没有。即使您修复了分号问题,您仍然不会在屏幕上看到任何内容。这是因为当代码完成时,东西只显示在屏幕上!如果您有draw()
功能,则只会在draw()
功能的末尾显示。如果你不这样做,那么它只会在程序结束时显示。无限循环会阻止任何内容显示在屏幕上。
但是,您不必拥有setup()
和draw()
功能。你不能拥有无限循环。 (如果你有draw()
函数,顺便说一下也是如此。顺便说一句。)
请注意,while
循环中的代码实际上并未发生变化,因此您可以摆脱while
部分。但请注意,在没有draw()
功能的情况下运行代码意味着mouseX
和mouseY
始终为0
。