如何在处理js时暂停循环?

时间:2017-09-28 01:31:50

标签: javascript processing

这是来自processing.js教程的widthheight.html示例的修改循环

flag=1;
for(int i=0; i<height; i+=20) 
{    if (flag)
     {   fill(0);    rect(0, i, width, 10);
         fill(255);  rect(i, 0, 10, height);
         if (mousePressed()){flag=0; }
         if (mouseReleased()){flag=1; }
    }
} 

我添加了标志和mousePress的东西试图逐步完成,但是循环步骤一次,然后不再运行它。并且它不关注鼠标。

标志本身似乎控制着循环,但我认为无法以交互方式设置它。

我也尝试用noLoop和loop替换标志,并且不会重新启动它。

我在命令列表中看不到任何会在循环内暂停甚至延迟的命令。

有办法吗?

1 个答案:

答案 0 :(得分:0)

noLoop()函数将停止每秒调用draw()循环60次。

我认为您的问题可能是由以下几行引起的:

if (mousePressed())
if (mouseReleased())

这不是这些功能的工作原理。这些都是您必须自己定义的函数,然后当按下或释放鼠标时,Processing会为您调用。像这样打电话给他们没有任何意义。您可能正在寻找mousePressed变量。

我建议你阅读处理中的输入this tutorial

编辑:以下是几个基本示例:

void draw(){
   if(mousePressesd){
      ellipse(mouseX, mouseY, 20, 20);
   }
}

此示例仅在按下鼠标时绘制内容。请注意,我使用的是mousePressed 变量,而不是尝试调用函数。

或者您可以使用noLoop()loop()功能,如下所示:

void draw(){
   ellipse(mouseX, mouseY, 20, 20);
}

void mousePressed(){
   noLoop();
}

void keyPressed(){
   loop();
}

此示例定义了一个mousePressed()函数,该函数在按下鼠标时自动调用,当发生这种情况时,它会暂停draw()循环。您可以通过按键取消暂停。

退一步,我会建议您将来花点时间了解答案在解雇之前告诉您的答案。以上所有内容都在我的原始答案以及我链接的教程中进行了解释。

如果您仍然无法使其发挥作用,请发布一个MCVE来解决我在新问题帖子中指出的错误,我们将从那里开始。祝你好运。