Java 需要enemyManager在产卵敌人之间等待

Java 需要enemyManager在产卵敌人之间等待,java,timed,spawning,Java,Timed,Spawning,我有两个不同的敌人类型和enemyManager arrayList类。我让每种类型的敌人在稍微远离屏幕的繁殖点随机繁殖,进入屏幕,然后离开另一边,死亡,并随机响应。问题是,当我使用循环来繁殖对象时,其中许多对象在同一个地方繁殖,或者相互追赶,在同一时间死亡,然后再次繁殖。我希望他们之间有一个延迟,以便他们更分散 我所寻找的是一种减缓java中敌人循环繁殖的方法。我尝试通过定时器扩展敌方管理器类,并命名spawn函数run,但没有成功 另外,我不是多线程,因为我还不知道如何设置它,并且试图在没有

我有两个不同的敌人类型和enemyManager arrayList类。我让每种类型的敌人在稍微远离屏幕的繁殖点随机繁殖,进入屏幕,然后离开另一边,死亡,并随机响应。问题是,当我使用循环来繁殖对象时,其中许多对象在同一个地方繁殖,或者相互追赶,在同一时间死亡,然后再次繁殖。我希望他们之间有一个延迟,以便他们更分散

我所寻找的是一种减缓java中敌人循环繁殖的方法。我尝试通过定时器扩展敌方管理器类,并命名spawn函数run,但没有成功

另外,我不是多线程,因为我还不知道如何设置它,并且试图在没有实现它的情况下完成这个项目,但是如果这似乎是最好的解决方案,那么我想我必须这样做

谢谢你的建议

更新的

class spawnLgCars extends TimerTask {
    public void run() {
        if (lgCars.size() < 10) {
            lgCars.add(new LgCar());
            System.out.println("spawned");
        } else if (lgCars.size() > 10) {
            lgCars.get(0);
        }
    }

}
class-spawnLgCars扩展了TimerTask{
公开募捐{
如果(lgCars.size()<10){
lgCars.add(新LgCar());
System.out.println(“派生”);
}否则如果(lgCars.size()>10){
lgCars.get(0);
}
}
}

这里我想介绍如何实现TimerTask,但因为它必须在自己的类中,所以它无法访问我正在使用的lgCars实例的属性。然后我尝试通过计时器任务添加扩展lgCars并在构造函数中调用该任务,但这也不起作用。不确定原因。

TimerTask和java.util.Timer将不起作用,因为它没有设置为在Swing事件线程上运行重复代码,应该避免使用Swing GUI。同样,您应该使用Swing计时器,因为在计时器的ActionListener中调用的所有代码都是在Swing事件线程上调用的


另一方面,如果您有一个长时间运行的任务,例如如果您想执行图像分析或其他需要长时间运行的任务,那么应该在后台线程中调用该任务,例如通过SwingWorker。

“但这不起作用”告诉我们的很少。事实上,我很难找出是什么导致了你目前的问题。请提供更多背景、详细信息和相关代码。您正在使用什么GUI库?如果是摆动,则使用摆动计时器延迟。如果不是,则可能是java.util.Timer或计划执行器服务。是的,现在可能是你阅读线程的时候了。我尝试了线程。睡眠,但它不起作用,它暂停了我的整个程序,而不仅仅是敌人管理器中的繁殖。我正在使用swing和awt。我添加的大部分内容都在各种教程中找到。这是我第一次用java构建gui。我用一个摆动计时器重新粉刷所有东西。我不确定我是否可以使用另一个来繁殖敌人?我将在下面发布我是如何尝试实现TimerTask的,并解释它做了什么以及为什么不起作用。谢谢你们两位。