Processing浏览器版背景无法每半秒切换故障排查求助
为啥你的Processing背景只会变一次就“罢工”啦?
先来看看你写的代码哦:
void setup(){ size(500,500); int(q=1) } void draw(){ if(q>0){ float(z=random(255)); float(x=random(255)); float(c=random(255)); background(z,x,c) } delay(500) }
现在用幼儿园游戏的方式给你讲错在哪:
第一个小错误:玩具放错地方啦
你在setup里写的int(q=1),不仅写法不对(应该写成int q = 1;),而且这个q是藏在setup的小房间里的,draw这个小朋友根本找不到它!就像你把积木锁在自己衣柜里,小伙伴没法拿来玩一样。而且你忘了加句号(分号;),电脑会看不懂你说的话哦。第二个小错误:好多地方没加句号
你看代码里的int(q=1)、background(z,x,c)、delay(500)后面都没加分号;,就像你说话不说完,电脑会懵圈的,它不知道你这句话到底结束没。第三个大错误:让draw小朋友一直“站着不动”
Processing里的draw函数本来是会自己一遍一遍跑的,就像小朋友绕着操场跑圈。你加了delay(500),就是让它每跑一步就站着不动半秒,而且它还一直在跑圈,这些不动的指令堆在一起,电脑就被堵死啦,直接“罢工”不干活了。
那怎么改呢?我们可以给draw小朋友装个小闹钟,每隔半秒才换一次颜色:
// 把q放在外面,这样setup和draw都能拿到它 int q = 1; // 记录上次换颜色的时间 long lastTime = 0; void setup(){ size(500,500); } void draw(){ // 看看现在的时间和上次换颜色的时间差够不够半秒 if(millis() - lastTime > 500){ float z = random(255); float x = random(255); float c = random(255); background(z, x, c); // 更新上次换颜色的时间 lastTime = millis(); } }
这样就不会卡死啦,背景会乖乖每半秒换一次颜色~
内容的提问来源于stack exchange,提问作者my_it_teacher_is_grumpy
相关产品推荐
相关产品推荐

