我的循环没有在屏幕上绘制任何内容

时间:2017-07-04 16:43:01

标签: java loops processing

我在简单的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循环中绘制任何内容,而后面的任何内容都不是。绘制之前的任何东西,而不是循环。我在这里缺少什么?

2 个答案:

答案 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()功能的情况下运行代码意味着mouseXmouseY始终为0