分子模拟器,JavaFX

时间:2016-01-09 22:30:40

标签: multithreading javafx updates

我希望能够建立一个大而有效的分子模拟器,但我遇到了问题。 当我在javaFX屏幕上添加分子或原子时,它们会更新它们的位置,偶尔会有一些原子消失,因为它们的旧位置没有按照它们应该的方式更新。

他们更新的唯一方法是,在每一帧(步骤)中,他们首先将旧位置更新为当前位置的最后一帧(步骤)。这是错误,有时它更新为x,y,z = 0,0,0。即使它应该是421,225,14等。

发生错误时,旧位置始终更新为0,0,0。

我使用4个线程来运行程序,带有线程安全列表,不在线程之间划分,也就是说,每个线程都有1/4的屏幕要处理。

这是更新方法:

private void updateOldPositions() {
    lastXPos = xPos;
    lastYPos = yPos;
    lastZPos = zPos;
}

这种方法不起作用,因此该程序添加了无限量的相同分子,因为它无法找到分子的旧位置去除。 它们现在都是x,y,z = 0,0,0。

cellLists.get((a.getLastXPos()+a.getLastYPos()+a.getLastZPos())/d).remove(a);

任何人都知道问题所在,如果你需要查看更多代码,可以添加指向git hub的链接。谢谢。

0 个答案:

没有答案