我有这个代码。在每次打印之前,每次打印矩形10次,每次移动60张图片,延迟1000毫秒。它没有,我不明白为什么。有人可以向我解释一下吗?
int time;
int wait =1000;
void setup()
{
time = millis();
size(800, 200);
background(255);
}
void draw() {
int i=0;
while (i<10){
if(millis() - time >= wait){
time = millis();
}
translate(60, 0);
rect(0, 0, 10, 10);
}
}
答案 0 :(得分:1)
这种情况正在发生,因为您正在阻止draw()函数完成。你可以通过设置一个整数i = 0然后你说while(i <10){}来做到这一点。同时你永远不会改变我,因此代码在while()内部进行无限循环,并且永远不会到达draw()函数的末尾,该函数将使用您想要的矩形刷新画布。您无法设置自己的渲染循环,因为Processing需要自己完成才能显示。因此你必须“顺其自然”并沿着它的循环定义一切,draw()函数。排序如下:
int time;
int wait =1000;
int translateX;
void setup()
{
time = millis();
size(800, 200);
background(255);
}
void draw() {
if (millis() - time >= wait) {
time = millis();
translateX +=60;
translate(translateX, 0);
rect(0, 0, 10, 10);
}
}
答案 1 :(得分:0)
正如@Petros所提到的那样,你进入了无限循环,但使用delay()
函数更容易,并且只调整了重新打印的次数。
int wait = 1000;
int translate = 0;
int count = 0;
void setup()
{
size(800, 200);
background(255);
}
void draw() {
if(count < 10)
{
delay(wait);
translate += 60;
translate(translate, 0);
rect(0, 0, 10, 10);
count++;
}
}
修改强>
升级版本,因此您可以更改打印记录的MAX
。它还会根据rec的数量改变画布的大小。还将数据流添加到右侧,并根据需要在评论中向下移动。
int wait = 100;
int translate = 0;
int count = 0;
static final int MAX = 10;
void setup()
{
size(60*MAX, 12*MAX);
background(255);
}
void draw() {
if(count < MAX)
{
delay(wait);
translate(translate, count*11);
translate += 60;
rect(0, 0, 10, 10);
fill(50);
text("Data", 15, 10);
noFill();
count++;
}
}