java - 为什么我的动画第一次播放时不流畅?

标签 java animation timer jscrollpane

我通过改变JScrollPane的水平滚动条的值制作了一个动画,类似于android操作系统屏幕之间的转换。在运行的前几秒(最多10秒),如果我要求动画,它不流畅并且有跳跃;但玩了一段时间后(要求动画),它变得完全流畅。为什么会发生这种情况,更重要的是如何解决这个问题?

我并不是说我的动画的前几秒不流畅,我的意思是当我第一次启动程序时,我要求动画不流畅,但后来,在下一次,那就是平滑

    final JScrollBar br = mainContainerScrollPane.getHorizontalScrollBar();
        ActionListener toTheRight = new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            if (br.getValue() + 140 <= destinationScreenValue)
            {
                br.setValue(br.getValue() + 140);
            } else
            {
                br.setValue(destinationScreenValue);
                currentScreenName = destinationScreenName;
                timer.stop();
            }
        }
    };
        timer = new Timer(10, toTheRight);
        timer.setRepeats(true);
        timer.setCoalesce(true);
        timer.start();

最佳答案

以 100 Hz 运行将几乎立即使 EDT 饱和,这将与正常的 JVM 启动开销发生冲突。一些替代方案:

  • 使用所示的方法 here检查您的动画预算。

  • 尝试 profiling以较低的费率找到目标平台的最佳值(value)。

  • Timer 指定超过启动开销的初始延迟。

  • 从较低的帧速率开始,并在事情稳定下来之后使用较短的延迟来提高值。

附录:以下是一些动态改变动画速率的示例:

关于java - 为什么我的动画第一次播放时不流畅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801909/

相关文章:

java - 使用 src/main 和 src/test 运行测试时出现问题

JavaFX:暂停直到动画完成

animation - Windows Phone 7 导航动画

javascript - 刷新页面时,javascript 中内置的计时器会重置

ios - 在后台计数(NSTimer超过3分钟)

java - 使用 Handler 从 TimerTask 更新 GUI

java - 尝试从文件中查找并打印出一行

java - 如何同时从mysql中插入和选择

javascript - 如何在 JavaScript 中暂停我的动画

java - 明显移动的 JProgressBar