编辑:我创建了一个最小的程序来复制此问题 here
<小时/>我有一个端点,它在 Display
的子类中调用 draw(node)
,然后调用 redraw()
。然后它将框架保存到文件中,然后将其返回以在浏览器中显示。
由于某种原因,端点在重新绘制帧之前返回响应,这导致第一次调用是空白背景,并且每个后续端点调用都是前一帧。
我做了一些调试,发现 draw()
代码仅在端点方法返回响应后执行,而不是我期望它作为方法调用的一部分执行的位置。
我已经尝试了一些带有 while 循环的 finished
变量来阻止它,还有一些线程正在 hibernate ,但到目前为止没有任何效果。
我正在使用 DropWizard 框架和处理库 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()
启动一个新线程,因此将其锁定同步到主线程解决了问题。
关于java - 处理 - draw() 在调用方法返回后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49818002/