在执行计时器时,我试图使图像与RaffleImage();
闪烁,我的角色不受任何碰撞的影响,我希望它仅受到2秒的影响,因此计时器可以执行仅持续2秒钟,然后完成。
我尝试过减去System.currentTimeMillis()
,但是我从此方法创建的任何变量的值始终相同,这使我从该减法中得到零。
您知道在经过几秒钟后如何停止或暂停计时器吗?
immuneTimer = new Timer(50, new ActionListener() {
@Override
public synchronized void actionPerformed(ActionEvent e) {
long initMillis = System.currentTimeMillis();
if (System.currentTimeMillis() - initMillis > 2000 ) { // this substract gives me 0
initImages();
setImmune(false); // so this never reached
immuneTimer.stop();
} else {
raffleImage(); //its executing like forever;
}
}
});
答案 0 :(得分:0)
Swing
计时器触发一个ActionEvent
。您可以从事件中使用getSource()
获取事件的来源。将该源转换为摆动计时器object
,并使用该源将其关闭。
要知道何时将其关闭,您需要具有一个变量count
,该变量应调用摆动计时器的次数。当变量达到该数量时,将其关闭。
int elapsedTime = 0;
int timerDelay = 50;
int max = 2000;
public void actionPerformed(ActionEvent ae) {
elapsedTime += timerDelay; // you could use getDelay here but it
// is in milliseconds.
if (elapsedTime >= max) {
Timer s = (Timer)ae.getSource();
s.stop();
}
// rest of code
}