处理 - draw() 在调用方法已经返回后 运行

Processing - draw() is run after the calling methods have already returned

编辑:我创建了一个最小的程序来复制这个问题here


我有一个端点在 Display 的子类中调用 draw(node),随后调用 redraw()。然后它将框架保存到一个文件,然后 returns 它显示在浏览器中。

出于某种原因,端点 returns 重绘帧之前的响应导致第一次调用是空白背景,并且每个后续端点调用都是前一帧。

我进行了一些调试,发现 draw() 代码仅在端点方法返回响应后执行,而不是我希望它作为方法调用的一部分执行的位置。

我已经尝试了一些带有 finished 变量的东西和 while 循环来停止它,一些线程正在休眠,但到目前为止没有任何效果。

我正在使用 DropWizard 框架和 Processing lib v3.3.7

@Override
public void settings() {
    size(S_WIDTH, S_HEIGHT);
    noLoop();
}

@Override
public void draw() {
    if (Objects.nonNull(currNode)) { //currNode starts as null
        // Some drawing stuff
    }
}

public void draw(Node node) {
    this.currNode = node;
    redraw();
}

redraw() 启动一个新线程,因此将其锁定同步到主线程解决了问题。