我正在制作一个“太空入侵者风格”的游戏。您(播放器)在屏幕底部左右移动。每个窗口都会有一个敌人,你必须移动到窗口射击。
我正在研究弹出系统的敌人。敌人随机的窗口应该每3秒更换一次。这是我的代码:
int enemylocation = new Random().nextInt(2) +1;
if(enemylocation==1){
enemy1.setFilter(Image.FILTER_NEAREST);
enemy1.draw(200,170,s*10);
}
if(enemylocation==2){
enemy2.setFilter(Image.FILTER_NEAREST);
enemy2.draw(200,360,s*10);
}
一切正常,但随机数部分总是选择一个新数字,因此两个窗口都在闪烁。如何延迟定时器每3秒更改一次enemylocation的值而不是经常?我需要使用TimerTask,因为我没有正常运行的tick系统。
由于
答案 0 :(得分:0)
您的代码段缺少TimerTask。无论如何,TimerTask有一个参数,您可以使用该参数设置延迟see here。
请注意,这是以毫秒为单位,因此为了等待1秒,请将延迟设置为1000。
答案 1 :(得分:0)
这是您使用java.util.Timer
的方法。我希望在此之后你不会重复你的问题。
import java.util.Timer;
import java.util.TimerTask;
public class TimerDemo {
final static Random ran = new Random();
static int enemylocation = 0;
static Timer tm = new Timer();
static long startTime = System.currentTimeMillis();
public static void main(String[] a) {
tm.schedule(new TimerTask() {
@Override
public void run() {
enemylocation = ran.nextInt(2) + 1;
System.out.println("enemylocation:" + enemylocation);
System.out.println("time:"
+ (System.currentTimeMillis() - startTime) / 1000);
}
}, 1, 3000);
}
}