Java Game Dev:Timertask这段剪辑代码

时间:2013-07-25 19:04:53

标签: java timer task

我正在制作一个“太空入侵者风格”的游戏。您(播放器)在屏幕底部左右移动。每个窗口都会有一个敌人,你必须移动到窗口射击。

我正在研究弹出系统的敌人。敌人随机的窗口应该每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秒更改一次ene​​mylocation的值而不是经常?我需要使用TimerTask,因为我没有正常运行的tick系统。

由于

2 个答案:

答案 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);

    }

}