有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我通过改变JScrollPane的水平滚动条的值制作了一个动画,类似于安卓操作系统屏幕之间的转换。在跑步的前几秒(最多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();

共 (1) 个答案

  1. # 1 楼答案

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

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

    • 尝试以较低的速率profiling为目标平台找到最佳值

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

    • 从较低的帧速率开始,使用较短的延迟,事情稳定下来后,将该值提升

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