java swing计时器......感叹

时间:2010-11-06 19:59:19

标签: java swing

我正在尝试使用swing计时器来补偿帧速率不一致。我试过了:


class TimerListener implements ActionListener {
   public void actionPerformed(ActionEvent e){
         timeCur = System.currentTimeMillis();
         timer.setDelay(speed - (int)(timeCur - timePrev));
         repaint();
    }
}
...
public void paintComponent(Graphics g){...
        timePrev = System.currentTimeMillis();
}
 speed=30;
 private long timePrev=System.currentTimeMillis(), 
 timeCur=System.currentTimeMillis();
无济于事。如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

事件调度线程上发生javax.swing.Timer的实例,当帧速率过高时合并事件。您可以使用setCoalesce(false),但我没有尝试过。此外,您可以将您正在做的事与example进行比较;虽然它可以激活更少的粒子,但它会显示绘画所花费的时间,并允许调整帧速率。