0
我正在尝试将actionlistener链接到我正在写的游戏的计时器。每当定时器触发时,2D阵列中的怪物随机移动到一个相邻的瓷砖。阵列并不完全充满怪物。没有怪物的地方,我的数组有空。我该如何将actionlistener应用于我的计时器?
这是我到目前为止有:
private class MonsterListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < Level.SIZE; i++) {
for (int j = 0; j < Level.SIZE; j++) {
if (monsters[i][j] != null) {
monsters[i][j].update();
}
}
}
updateState();
}
}
我的怪物类中:
public void update() {
rand1 = new Random();
rand2 = new Random();
drow = rand1.nextInt(3); //random int 0,1,2
dcol = rand2.nextInt(3); //random int 0,1,2
drow -= 1; //random int -1,0,1
dcol -= 1; //random int -1,0,1
row += drow;
col += dcol;
}
当我创建我的定时器,我这样做
public final int DELAY = 1000;
Timer myTimer = new Timer(DELAY, new MonsterListener());
然而,我不断收到错误消息
cannot find symbol
symbol : constructor Timer(int,Game.MonsterListener)
location: class java.util.Timer
myTimer = new Timer(DELAY, listener);
^
我相信你是对的!关于此问题的另一个问题。有没有什么办法从同一个项目的另一个类访问这个定时器?我希望我的GUI在每次这个计时器触发时都更新,但计时器不在面板类中我有更新GUI,所以在我的面板类中有什么方法可以说“当计时器触发时,执行此操作......“? – user1850008
我不确定我是否完全了解您的项目组织。但是,如果要将计时器与面板的每个实例相关联,则可以在面板的构造函数中创建并设置计时器。 –