摇摆动画运行极慢我使用JavaSwing运行的当前动画有一个问题。这是一个离散的事件模拟,基于文本的模拟工作得很好,我只是在把模拟和GUI输出连接起来有问题。对于这个例子,我将有10辆车要模拟。这些汽车的代表是JPanels稍后我将对此进行详细阐述。因此,考虑一下事件Process_CAR_CORT。每次计划执行此事件时,我都会添加一个Car对象的ArrayList叫cars在我的Model班级,等级。这个Car类具有以下相关属性:Point currentPos; // The current position, initialized in another method when knowing route.double speed;
// giving the speed any value still causes the same problem but I have 5 atm.RouteType route;
// for this example I only consider one simple route此外,它还有以下方法move() :switch (this.route) {
case EAST:
this.currentPos.x -= speed;
return this.currentPos;...//only above is relevant in this example一切都很好。所以理论上,这辆车沿着一条从东到西的直线行驶,而我刚刚调用了move()方法对我想移动的每一辆车。返回到Process_CAR_CORT事件。在添加了一个CAR对象之后,它调用了一个方法addCarToEast()在View班级,等级。这增加了一个JPanel在道路的起点,从东向西。去View类,现在我有了一个*分离的*线程,它执行以下操作(run()方法):@Override
public void run() {
while (true) {
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!cars.isEmpty()) {
cars.get(i).setLocation(
new Point(getModel.getCars().get(i).move()));
if (i == cars.size() - 1) {
i = 0;
} else {
i++;
}
}
}
}以上所述起先使汽车由东向西平稳行驶。但是在3到4辆车移动之后,它的速度非常慢,当我有10辆车行驶时,它的移动速度非常小。只是为了清理一下,此刻在Model班上有一个ArrayList的Car对象中的View类也有一个ArrayList的JPanel代表汽车的物体。我在试着匹配Car对象的JPanels,但我显然是在做CRA*Y的工作。我怀疑我做的事情效率很低,但我不知道是什么。我一开始以为它会访问ArrayList我想这会让它变得很慢。有什么指示我可以改变使它顺利运行吗?
添加回答
举报
0/150
提交
取消