当前位置: 首页 > 知识库问答 >
问题:

在处理草图中插入延迟

丘飞
2023-03-14

我试图在处理中插入延迟草图。我尝试了线程。sleep(),但我想它不会工作,因为在Java中,它会阻止绘制图形。

基本上,我必须画一个三角形,在画三条边时会有延迟。

我该怎么做呢?

共有2个答案

王念
2023-03-14

正如@user2468700建议的那样,使用计时功能。我喜欢milis()。

如果您有一个值以特定间隔跟踪时间和当前时间(持续更新),则可以根据延迟/等待值检查一个计时器(手动更新的一个)是否落后于另一个(持续的一个)。如果有,请更新数据(本例中要绘制的点数),最后更新类似于本地秒表的值。

下面是一个基本的例子。渲染与数据更新分开,以便于理解。

//render related
PVector[] points = new PVector[]{new PVector(10,10),//a list of points
                                 new PVector(90,10),
                                 new PVector(90,90)};
int pointsToDraw = 0;//the number of points to draw on the screen
//time keeping related
int now;//keeps track of time only when we update, not continuously
int wait = 1000;//a delay value to check against

void setup(){
  now = millis();//update the 'stop-watch'
}
void draw(){
  //update
  if(millis()-now >= wait){//if the difference between the last 'stop-watch' update and the current time in millis is greater than the wait time
    if(pointsToDraw < points.length) pointsToDraw++;//if there are points to render, increment that
    now = millis();//update the 'stop-watch'
  }
  //render
  background(255);
  beginShape();
  for(int i = 0 ; i < pointsToDraw; i++) {
    vertex(points[i].x,points[i].y);
  }
  endShape(CLOSE);
}
汪茂
2023-03-14

处理程序可以读取计算机时钟的值。当前的第二个被读取与第二()函数,它返回值从0到59.当前分钟被读取与分钟()函数,它也返回值从0到59。-处理:编程手册

其他与时钟相关的功能:milis()、day()、Moon()、年()。

这些数字可用于触发事件和计算时间流逝,如上述书中引用的以下处理示意图所示:

// Uses millis() to start a line in motion three seconds 
// after the program starts

int x = 0;

void setup() { 
  size(100, 100);
}

void draw() {
  if (millis() > 3000) {
    x++;
    line(x, 0, x, 100);
  }
}

下面是一个三角形的示例,其边在3秒后绘制(三角形每分钟重置一次):

int i = second();

void draw () {
  background(255);
  beginShape();
  if (second()-i>=3) {
    vertex(50,0);
    vertex(99,99);
  }
  if (second()-i>=6) vertex(0,99);
  if (second()-i>=9) vertex(50,0);
  endShape();
}
 类似资料:
  • 这是如何使用公共类frome的一个后续步骤。其他处理选项卡中的java文件?;使用来自的Usage类中的示例。java文件-有完整的文档吗?-处理2。x和3。x论坛,我有这个: /tmp/Sketch/Foo.java 这个例子运行得很好,但是如果我取消注释import peasy。组织 行,则编译失败: 当然,我确实在下安装了PeasyCam,如果我导入peasy.*它工作得很好 来自草图。 我

  • 我目前正在研究一种数据可视化技术,它从电影中获取信息,实时播放并同时创建。为此,我想有两个独立的草图窗口。一个窗口应显示实时播放的电影,另一个窗口应显示正在进行的可视化。 我似乎不知道如何轻松地添加另一个草图窗口,并尝试了一些在处理3中不再工作的示例。 然后我偶然发现了这个例子:https://gist.github.com/atduskgreg/666e46c8408e2a33b09a 尽管我可

  • 下面的代码旨在将蓝色背景和三个移动形状(圆形、正方形、三角形)绘制到屏幕上。然而,代码是用面向对象编程编写的,我的草图在处理IDE的Java模式下工作得很好,但在OpenProcessing中却不能工作,这是不对的。代码编译得很好。我想我在OOP中做了一些不正确的事情。谁能帮帮我吗?谢了!

  • 我怎么让它工作?

  • 问题内容: 如何在“处理”中创建单个草图的多个窗口? 实际上我想在一个窗口中检测并跟踪特定颜色(通过网络摄像头),然后将检测到的坐标显示为另一个窗口中的点,直到现在我仍可以在检测到该颜色的同一个窗口中显示这些点。我想将其拆分为两个不同的窗口。 问题答案: 您需要创建一个新框架和一个新的PApplet …这是一个示例草图:

  • 如何在加工过程中创建单个草图的多个窗口? 实际上,我想在一个窗口中检测并跟踪特定的颜色(通过网络摄像头),并在另一个窗口中将检测到的坐标显示为一个点。到目前为止,我能够在同一个窗口中显示检测到它的点。但我想把它分成两个不同的窗口。