【发布时间】:2014-10-08 21:07:48
【问题描述】:
我有几个不同的敌人类型和每个类型的enemyManager arrayList 类。我让每种类型的敌人在稍微偏离屏幕的生成点随机生成,然后出现在屏幕上,然后离开另一边,死亡并随机响应。问题是当我使用循环来生成对象时,其中许多对象会在同一个地方生成或相互赶上,同时死亡并再次生成。我想在他们之间有一个延迟,以便他们更加分散。
我正在寻找的是一种在 java 中减缓敌人循环生成的方法。我尝试通过计时器扩展敌人管理器类并命名 spawn 函数运行,但这不起作用。
另外我不是多线程,因为我真的不知道如何设置它,并且试图在不实现它的情况下完成这个项目,但如果这似乎是最好的解决方案,那么我想我将不得不这样做。
感谢您的任何建议。
更新.....
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);
}
}
}
这里我想如何实现 TimerTask,但因为它必须在它自己的类中,它无法访问我正在使用的 lgCars 实例的属性。然后我尝试通过 Timer Task 添加扩展 lgCars 并在构造函数中调用该任务,但这也不起作用。不知道为什么。
【问题讨论】:
-
“但这不起作用”告诉我们很少。事实上,我很难弄清楚是什么导致了你目前的问题。请提供更多背景、细节和相关代码。您使用的是什么 GUI 库?如果是 Swing,则使用 Swing 计时器来延迟。如果不是,那么可能是 java.util.Timer 或预定的执行程序服务。是的,现在可能是您阅读线程的时候了。
-
我尝试了 Thread.sleep 但它不起作用,它暂停了我的整个程序,而不仅仅是在敌人管理器中生成。我正在使用swing和awt。我添加的大部分内容都是在各种教程中找到的。这是我第一次在 java 中构建 gui。我正在使用摇摆计时器重新粉刷所有东西。我不确定我是否可以使用另一个来生成敌人?我将在下面发布我如何尝试实现 TimerTask 并解释它做了什么以及为什么它不起作用。谢谢你们。