处理 - 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()
启动一个新线程,因此将其锁定同步到主线程解决了问题。
编辑:我创建了一个最小的程序来复制这个问题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()
启动一个新线程,因此将其锁定同步到主线程解决了问题。