首页 > 解决方案 > 我不知道如何一一制作代码构建块

问题描述

这是我第一次在这里提出问题,我很沮丧,因为我已经尝试了几个小时来解决这个问题。为什么我的代码没有单独构建每个多维数据集。代码应该用立方体水平填充画布,在填充另一行后改变行。

void setup() {
  size(600,600);
  background(0);
  frameRate(1);
}
int n=0;
int y=0;
int xCoord=0;
void draw() {
    while(n<10)
    {
        for(int i = 0; i<10; i++)
        {
            rect(xCoord, y, 60,60);
            xCoord += 60;
        }
         xCoord = 0; n++; y+=60; 
         
    }
}

标签: javamatrixprocessing

解决方案


请记住,每帧都会调用绘图函数。如果你想为某些东西制作动画,你必须确保每一帧都显示一些新信息。

您的 while 循环在一次绘图迭代中完成(并因此构建所有块) 。因此,您还将看到在第一次绘制迭代完成后绘制的所有块。因此,您看不到它们是一一构建的。

如果要逐帧绘制它们,则需要确保在每次绘制迭代之间更改块的数量。

伪代码:

var currentAmountOfBlocks;

fun draw:
   // Draw currentAmountOfBlocks blocks.
   for (i = 0; i <= currentAmountOfBlocks; i++)
   {
       drawBlock();
   }
   currentAmountOfBlocks++

然后,Processing 会根据您的需要为您这样调用它frameRate

draw(); // 1 block
draw(); // 2 blocks
draw(); // ... blocks 
draw(); // n blocks

你基本上在做:

fun draw:
   drawAllBlocks()

为您处理这样的呼叫:

draw(); // all blocks
draw(); // all blocks
draw(); // all blocks
draw(); // all blocks

是的,你有一个 while 循环计数到十个块,但它在你的第一次 draw() 迭代完成之前完成。


推荐阅读