处理动画

问题描述:

所以其我的第一天用处理,我需要一点帮助下手,这是我的代码,即时通讯做的选择排序:处理动画

int[] numbers; // Declare array 
int currentmin; 
int exchange=0; 
void setup() { 
    frameRate(0.1); 
    size(500,500); 



numbers = new int[10]; // Create array with 10 cells 
    background(105); 
    for (int i = 0; i < numbers.length; i++) { // random numbers from 1 to 100 
    int r = int(random(1,100)); // create random numbers 

    for (int j=0; j<numbers.length; j++) { //make sure not duplications 
     if(numbers[j]==r) 
     {r=r+1;} 
    } 
    numbers[i]=r; //fill array with random numbers 
    println(r); 
} 
fill(255,0,0); 
for (int i = 0; i < numbers.length; i++) { //draw rectangles 
    rect(i*40+10,400 ,35, -numbers[i]); 

} 
for (int j=0; j < numbers.length; j++){ //set pivot number 


    currentmin=numbers[j]; 
for (int i=j+1; i < numbers.length; i++){ //find lowest number in array 

    if (numbers[i] < currentmin) { 
     currentmin = numbers[i]; 
    } 
} 
    for (int i=j; i<numbers.length;i++){ //swap pivot with lowest number 
    if (numbers[i]==currentmin){ 
    exchange=numbers[j]; 
    numbers[j]=numbers[i]; 
    numbers[i]=exchange; 
    //here 
    } 
    } 
} 

} 

void draw() { 

    background(105); 
for (int z = 0; z < numbers.length; z++) { 
    rect(z*40+10,400 ,35, -numbers[z]); 

    } 
} 

,你能看到我在这里有评论我试图使事情动画,并看到在第一次循环中的每个迭代矩形改变的地方,但它不工作......任何帮助?我试图调用draw();绝望,但它没有工作......无论如何,我可以得到一个帮助?

这不完全是一个微不足道的动画来执行。你应该从简单的事情开始。

但要回答你的问题,你不会把你的动画放在for循环中。相反,你需要做到这一点,以便draw()函数绘制一个动画帧。 Processing会自动每秒调用draw()函数60次,因此通过每次更改绘制的内容,您都可以创建一个动画。

无耻的自我推销:我写了一个关于在Processing可用的here中创建动画的教程。

+0

所以我明白,他们是没有简单的编辑,可以解决我的代码,我需要改变的概念和我的工作方式? – Rida

+0

@里达几乎。基本上,不要在'for'循环中执行算法,你需要把每个调用都作为一个框架对待'draw()。您可以使用随时间更新的草图级变量来执行此操作。基本上重新创建'for'循环正在做什么,但是在'draw()'函数中。 –

+0

上帝它不工作:/你可以写给我,所以我可以理解它? – Rida