Processing 处理中的Draw()未更新屏幕

Processing 处理中的Draw()未更新屏幕,processing,draw,Processing,Draw,我对处理是完全陌生的,我正在尝试运行一个程序,如果变量的值小于20,我会画一个圆,如果值大于20,我会画一个椭圆。问题是,如果我尝试使用数组的值,屏幕不会得到更新。它只取一个值,不会改变。如果我只是创建一个随机数,那么它就工作了。我还看到,当屏幕不更新终端中的值时,会显示正确的数字,因此程序运行时不会出现明显错误。(所有这些println仅用于调试目的…) void draw(){ 延迟(500); 对于(int i=0;i

我对处理是完全陌生的,我正在尝试运行一个程序,如果变量的值小于20,我会画一个圆,如果值大于20,我会画一个椭圆。问题是,如果我尝试使用数组的值,屏幕不会得到更新。它只取一个值,不会改变。如果我只是创建一个随机数,那么它就工作了。我还看到,当屏幕不更新终端中的值时,会显示正确的数字,因此程序运行时不会出现明显错误。(所有这些println仅用于调试目的…)

void draw(){
延迟(500);
对于(int i=0;i如果(distance 2@John Coleman评论在现场,但我将尝试提供更多细节,以便您正确理解问题:

首先检查功能文档。它显示:

在setup()之后直接调用draw()函数,draw()函数连续执行其块中包含的代码行,直到程序停止或调用noLoop()。draw()自动调用,并且永远不应显式调用。所有处理程序都会在draw()结束时更新屏幕,永远不会更早

因此,您
draw()
函数已经是一个循环,您要做的是在函数外部创建
i
变量,并在每次调用
draw()
时递增它:

int i = 0;
void draw () {
    record2 = totalData.getJSONObject(i);
    i++;
    distance2 = int(record2.getString("field1"));
    println("distance2 is " + distance2);

    if (distance2 <= 20) { 
        println("triangle");
        background(500);
        triangle(30, 75, 58, 20, 86, 75);
        println("distance2 at if " + distance2);
    } else{
        background(1700);
        println("ellipse");
        ellipse(56, 46, 55, 55);

        println("distance at else is " + distance2);
    }
    println("distance2 at end " + distance2);
}
inti=0;
无效提款(){
record2=totalData.getJSONObject(i);
i++;
距离2=int(record2.getString(“field1”);
println(“距离2为”+距离2);

如果处理中的距离(Dista2)被缓冲,则每帧只显示一次(在概念上,在的结尾。在调用<代码> DRAW()/代码>时,不应该期望看到屏幕更新。
是有问题的。你只会看到三角形的最终位置。如果没有一个完整的草图(实际上可以按原样运行),很难说得更多。
int i = 0;
void draw () {
    record2 = totalData.getJSONObject(i);
    i++;
    distance2 = int(record2.getString("field1"));
    println("distance2 is " + distance2);

    if (distance2 <= 20) { 
        println("triangle");
        background(500);
        triangle(30, 75, 58, 20, 86, 75);
        println("distance2 at if " + distance2);
    } else{
        background(1700);
        println("ellipse");
        ellipse(56, 46, 55, 55);

        println("distance at else is " + distance2);
    }
    println("distance2 at end " + distance2);
}