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

时间:2018-04-13 13:18:14

标签: java processing dropwizard

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

我的端点在draw(node)的子类中调用Display,随后调用redraw()。然后它将帧保存到文件然后返回它以在浏览器中显示。

由于某种原因,端点在重绘帧之前返回响应,这导致第一个调用是空白背景,并且每个后续端点调用都是前一帧。

我做了一些调试,发现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();
}

1 个答案:

答案 0 :(得分:0)

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