For loop 让循环在处理过程中来回运行
目前,我正在尝试在处理草图中获得一个“来回运行”的循环。例如,我可以使用For loop 让循环在处理过程中来回运行,for-loop,boolean,processing,For Loop,Boolean,Processing,目前,我正在尝试在处理草图中获得一个“来回运行”的循环。例如,我可以使用mouseY来实现它,但我想自动实现它:使用rect()应该一行一行地水平显示…如1、1+next、1+next+next和15行后反转!15, 14, 13, 12,11,10,9… 使用frameCount我可以让它们按我的意愿运行…但还没有回来。所以我读了一些关于布尔语句的书…并试图用语法来理解它…语法似乎还可以…但我不能真正得到正确的逻辑来让它工作。有人知道如何用正确的方式写吗? 这是我目前的代码: int a; i
mouseY
来实现它,但我想自动实现它:使用rect()代码>应该一行一行地水平显示…如1、1+next、1+next+next和15行后反转!15, 14, 13, 12,11,10,9…
使用frameCount代码>我可以让它们按我的意愿运行…但还没有回来。所以我读了一些关于布尔语句的书…并试图用语法来理解它…语法似乎还可以…但我不能真正得到正确的逻辑来让它工作。有人知道如何用正确的方式写吗?
这是我目前的代码:
int a;
int i;
int step = 60;
void setup() {
size(1080, 1080);
}
void draw() {
background(0);
for (a = 0; a < 15; a++) {
for (i = 0; i < 5; i++) {
fill(255, 255, 255);
rect(216*i,60*a,216,60);
}
}
}
inta;
int i;
int步长=60;
无效设置(){
尺寸(10801080);
}
作废提款(){
背景(0);
对于(a=0;a<15;a++){
对于(i=0;i<5;i++){
填充(255、255、255);
rect(216*i,60*a,216,60);
}
}
}
这就创建了一个模式——一次完成——我知道for(a=0;a
或for(a=0;a
可以让它工作,但我想让它自动工作——这需要出现在某个地方——但是怎么做呢
a+=step;
if ( a > 15 || a < 0 ){
step = -step;
}
a+=step;
如果(a>15 | | a<0){
步骤=-步骤;
}
感谢您提供的任何帮助可能更简单的方法是您不尝试更改递增步骤的方式,而是更改为每个步骤生成的矩形数量。为了更清楚地考虑这个代码:
MAX_RECTANGLES = 15;
let frameCount = 0;
while (frameCount < 100) {
frameCount++;
step = frameCount % (MAX_RECTANGLES * 2);
nbRect = MAX_RECTANGLES - Math.abs(MAX_RECTANGLES - step);
console.log(step, nbRect);
}
MAX_矩形=15;
设frameCount=0;
而(帧数<100){
frameCount++;
步长=帧数%(最大矩形*2);
nbRect=MAX_矩形-Math.abs(MAX_矩形-step);
控制台日志(步骤,nbRect);
}
frameCount
变量和while
循环只是重新创建p5js循环,这里有趣的是步骤和nbRect
变量:
MAX_RECTANGLES
是显示所有矩形时要显示的矩形数。在我们的示例中,我们希望显示15个矩形
步骤将在0
和MAX_矩形*2
之间变化。在我们的示例中,这将在0
和30
之间变化
- 我们将根据以下规则在
0
和15
之间改变nbRect
:
- 如果
0谢谢您!因此,我将其写入如下处理:
int MAX_RECT = 18;
int step = 60;
void setup() {
size(1080, 1080);
frameRate(30);
}
void draw() {
background(0);
int step = (frameCount/2 % MAX_RECT) *2;
int nbRectangles = MAX_RECT - Math.abs(MAX_RECT - step);
for (int a = 0; a < nbRectangles; a++) {
for (int i = 0; i < 5; i++) {
fill(255, 255, 255);
rect(216 * i, 60 * a, 216, 60);
}
}
}
int MAX_RECT=18;
int步长=60;
无效设置(){
尺寸(10801080);
帧率(30);
}
作废提款(){
背景(0);
整数步长=(帧数/2%最大值)*2;
int nbRectangles=MAX_RECT-Math.abs(MAX_RECT-step);
对于(int a=0;a
有没有办法不重画第一行矩形?我得查一下数学题;功能–我还不熟悉这个…:-(