摇摆动画运行极慢

摇摆动画运行极慢

我使用JavaSwing运行的当前动画有一个问题。这是一个离散的事件模拟,基于文本的模拟工作得很好,我只是在把模拟和GUI输出连接起来有问题。

对于这个例子,我将有10辆车要模拟。这些汽车的代表是JPanels稍后我将对此进行详细阐述。

因此,考虑一下事件Process_CAR_CORT。每次计划执行此事件时,我都会添加一个Car对象的ArrayListcars在我的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班上有一个ArrayListCar对象中的View类也有一个ArrayListJPanel代表汽车的物体。我在试着匹配Car对象的JPanels,但我显然是在做CRA*Y的工作。

我怀疑我做的事情效率很低,但我不知道是什么。我一开始以为它会访问ArrayList我想这会让它变得很慢。

有什么指示我可以改变使它顺利运行吗?


MM们
浏览 409回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java