【问题标题】:Use of delay() in Processing Environment在处理环境中使用 delay()
【发布时间】:2013-07-14 09:52:36
【问题描述】:

我正在使用处理语言来绘制一个随时间增长的矩形。以下代码没有给出任何输出。

void setup()
{
    size(900,900);
}
void draw()
{
    int edge=100;
    for(int i=0;i<300;i++)
    {
        delay(100);  
        edge++;      
        rect(100,100,edge,edge);
    }
}

我怀疑我错误地使用了 delay() 函数。

【问题讨论】:

    标签: processing


    【解决方案1】:

    这是一种适合大多数用途的“自己动手”延迟方法。只需更改传递给延迟方法的值即可更改时间。例如,这大约每 2 秒输出一次“开始”和“结束”。

    void draw()
    {
      System.out.println("start");
      delay(2000);
      System.out.println("end");
      delay(2000);
    }
    
    void delay(int delay)
    {
      int time = millis();
      while(millis() - time <= delay);
    }
    

    【讨论】:

    • 这个例子适用于 println() 但不适用于绘制形状 - 整个程序在绘制任何东西之前都会延迟 - 无论延迟在代码中的什么位置。
    【解决方案2】:

    我建议使用 millis() 函数滚动您自己的延迟系统。

    看看this example

    【讨论】:

      【解决方案3】:

      通过处理,屏幕不会刷新,直到程序流程到达 draw() 的末尾
      请尝试以下操作:

       void setup()
       {
         size(900,900);
         frameRate(10);
       }
      int edge = 100;
      void draw()
      { 
           edge++;      
           rect(100,100,edge,edge);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-12
        • 1970-01-01
        • 2019-04-02
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多