我正在尝试使用 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();
无济于事。如何解决这个问题?
最佳答案
javax.swing.Timer
的实例在事件调度线程上触发,当帧速率太高时合并事件。您可以使用 setCoalesce(false)
,但我还没有尝试过。此外,您可以将您正在做的事情与此 example 进行比较。 ;尽管它为较少的粒子设置动画,但它会显示绘画所花费的时间并允许调整帧速率。
关于java swing 定时器...叹息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114908/