【问题标题】:Processing: Rendering stops when delay function used处理:使用延迟功能时停止渲染
【发布时间】:2014-06-15 18:02:53
【问题描述】:

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

有人可以告诉我哪里出错了吗?到底发生了什么?

另外如何在内部定义 draw() 和 setup() ?我知道 setup() 是一次性渲染和 draw() 就像一个无限循环。

代码:

void delay(int delay)
{
int time = millis();
while(millis() - time <= delay);
}

void setup(){
   size(600,400);
   smooth();     
 }

void draw(){
   background(0); //black
   delay(1000);
   fill(255); //white
   ellipse(width/2, height/2, 300, 300);
   delay(1000);
 }

【问题讨论】:

    标签: processing


    【解决方案1】:

    draw() 和 setup() 是如何在内部定义的?我知道 setup() 是一次性渲染 >and draw() 就像一个无限循环。

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

    http://wiki.processing.org/w/I_display_images_in_sequence_but_I_see_only_the_last_one._Why%3F

    如果您想对事情进行计时,请使用布尔值作为事情发生时间的标志。

    也检查一下:

    http://wiki.processing.org/w/What_are_setup()_and_draw()%3F

    http://wiki.processing.org/w/How_do_I_display_a_message_for_a_few_seconds%3F

    【讨论】:

      【解决方案2】:

      如果您想要延迟,请使用 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() 方法类似于临时无限循环)。 在 Windows 7 专业版 Processing 2.2.1 上测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-10
        • 2017-03-20
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多