Processing 处理:使用延迟功能时渲染停止

Processing 处理:使用延迟功能时渲染停止,processing,Processing,我为我的草图创建了一个简单的延迟函数,并尝试使用它,但似乎渲染停止了,即出现了一个简单的灰色屏幕,然后所有内容都立即渲染 有人能告诉我哪里出了问题吗?到底发生了什么事? 还有,draw()和setup()是如何在内部定义的?我知道setup()是一个一次性的render and draw(),就像一个无限循环 代码: 无效延迟(整数延迟) { 整数时间=毫秒(); while(毫秒()-时间 还有,draw()和setup()是如何在内部定义的?我知道setup()是一次性渲染>和draw(),

我为我的草图创建了一个简单的延迟函数,并尝试使用它,但似乎渲染停止了,即出现了一个简单的灰色屏幕,然后所有内容都立即渲染

有人能告诉我哪里出了问题吗?到底发生了什么事?

还有,draw()和setup()是如何在内部定义的?我知道setup()是一个一次性的render and draw(),就像一个无限循环

代码:

无效延迟(整数延迟)
{
整数时间=毫秒();
while(毫秒()-时间
还有,draw()和setup()是如何在内部定义的?我知道setup()是一次性渲染>和draw(),就像一个无限循环

问题是draw()只在每次执行结束时渲染一个帧,因此停止它通常不是一个好主意

如果你想计时的话,就用布尔值作为什么时候该发生的标志

请同时检查以下各项:


如果需要延迟,请使用Thread()对象,如以下代码,在单独的线程中运行延迟:

void delay(int delay)
{
  try
  {
  Thread.sleep(delay);
  }
  catch(Exception EX)
  {
  }
}

void setup(){
   size(600,400);
   smooth();
   thread("sleepy"); // the function sleepy will be started in a new thread     
 }

void draw(){
 // draw() does nothing here except refresh the screen
 }
void sleepy()
{
  while(true)
  {
    background(0); //black
    delay(1000);
    fill(255); //white
    ellipse(width/2, height/2, 300, 300);
    delay(1000);
  }
}
此外,上面的延迟方法Thread.sleep()在运行时不会消耗整个CPU内核(millis()方法类似于临时无限循环)。 在Processing 2.2.1和Windows 7 professional上进行了测试

void delay(int delay)
{
  try
  {
  Thread.sleep(delay);
  }
  catch(Exception EX)
  {
  }
}

void setup(){
   size(600,400);
   smooth();
   thread("sleepy"); // the function sleepy will be started in a new thread     
 }

void draw(){
 // draw() does nothing here except refresh the screen
 }
void sleepy()
{
  while(true)
  {
    background(0); //black
    delay(1000);
    fill(255); //white
    ellipse(width/2, height/2, 300, 300);
    delay(1000);
  }
}