我正在使用挥杆计时器为我游戏中的数字动作制作动画。 如果我将它从一个点发送到另一个点,它工作正常,但是当我多次调用它时,动画速度会增加。
我认为它必须以这种方式工作,但是我可以“叠加”定时器,只在当前动画结束时启动升级吗?
这不是确切的代码,但是这样工作:
Timer timer = new Timer(40, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(figure.x != target.x){
if(figure.x < target.x){
figure.x+1;
}else{
figure.x-1;
}
}
}
});
timer.start();
答案 0 :(得分:4)
您可以在此处执行以下操作:
除此之外:没有办法像你想象的那样'排队'计时器,一次显示一个动画。您需要更多计时器之外的框架代码。 (例如,使用链接列表来维护移动事件的队列,当一个移动完成时,计时器任务从队列中拉出下一个移动并开始处理...)
答案 1 :(得分:3)
对于不是基本动画速率倍数的每个不同时段,使用单独的javax.swing.Timer
实例。所有实例共享一个公共队列。通常只需要少数几个; 25左右是实际限制。