Class AnimationRenderer

java.lang.Object
com.imyeyu.fx.utils.AnimationRenderer

public class AnimationRenderer extends Object
动画帧渲染器,可控帧率,在 JVM 启动参数含-Djavafx.animation.fullspeed=true时,预设 FPS 才可以突破屏幕刷新率。
    Box box = new Box(128, 128, 128);
    box.setDrawMode(DrawMode.LINE);
    box.setCullFace(CullFace.BACK);
    box.setMaterial(new PhongMaterial(RED));
    box.setRotationAxis(new Point3D(0, 64, 0));

    // 以 240 FPS 每秒 90 度旋转一个 3D 立方体
    AnimationRenderer renderer = new AnimationRenderer(240);
    renderer.addRenderCallback(deltaSecond -> {
        box.setRotate(box.getRotate() + 90 * deltaSecond);
    });
Since:
2023-03-08 09:48
Author:
夜雨
  • Property Details

    • mpf

      public javafx.beans.property.ReadOnlyDoubleProperty mpfProperty
      获取帧生成时间属性(毫秒)
      See Also:
    • fps

      public javafx.beans.property.ReadOnlyIntegerProperty fpsProperty
      获取当前渲染 FPS 属性
      See Also:
  • Field Details

    • renderCallbacks

      protected final LinkedList<com.imyeyu.java.bean.CallbackArg<Double>> renderCallbacks
      渲染回调
    • animations

      protected final LinkedList<AnimationRenderer.Animation> animations
      动画渲染队列
    • timer

      protected final javafx.animation.AnimationTimer timer
      渲染器
    • mpf

      protected final javafx.beans.property.DoubleProperty mpf
      平均帧生成时间
    • fps

      protected final javafx.beans.property.IntegerProperty fps
      平均帧率
    • statusTimer

      protected final RunAsyncScheduled<?> statusTimer
      状态计时器
  • Constructor Details

    • AnimationRenderer

      public AnimationRenderer()
      默认构造,60 FPS
    • AnimationRenderer

      public AnimationRenderer(int prefFPS)
      标准构造
      Parameters:
      prefFPS - 预设帧率
  • Method Details

    • start

      public void start()
      启动
    • stop

      public void stop()
      停止
    • render

      public void render(javafx.util.Duration duration, AnimationRenderer.AnimationCallback callback)
      添加渲染动画
      Parameters:
      duration - 持续时间
      callback - 动画回调
    • render

      public void render(javafx.util.Duration duration, AnimationRenderer.AnimationCallback callback, com.imyeyu.java.bean.Callback onFinishedEvent)
      添加渲染动画
      Parameters:
      duration - 持续时间
      callback - 动画回调
      onFinishedEvent - 动画完成回调
    • addRenderCallback

      public void addRenderCallback(com.imyeyu.java.bean.CallbackArg<Double> callback)
      添加渲染回调
      Parameters:
      callback - 回调
    • removeRenderCallback

      public void removeRenderCallback(com.imyeyu.java.bean.CallbackArg<Double> callback)
      移除渲染回调
      Parameters:
      callback - 回调
    • setPrefFPS

      public void setPrefFPS(int prefFPS)
      预设 FPS,渲染器会尽量匹配此帧率渲染,可能会突破少许,系统资源紧张时实际渲染帧率会低于预设
      Parameters:
      prefFPS - FPS 取值范围 [1, 1000]
    • getMPF

      public double getMPF()
      获取帧生成时间(毫秒)
      Returns:
      帧生成时间
    • mpfProperty

      public javafx.beans.property.ReadOnlyDoubleProperty mpfProperty()
      获取帧生成时间属性(毫秒)
      Returns:
      帧生成时间属性(毫秒)
    • getFPS

      public int getFPS()
      获取当前渲染 FPS
      Returns:
      FPS
    • fpsProperty

      public javafx.beans.property.ReadOnlyIntegerProperty fpsProperty()
      获取当前渲染 FPS 属性
      Returns:
      FPS 属性
    • deltaNanos

      public double deltaNanos()
      获取累计帧差(纳秒)
      Returns:
      累计帧差(纳秒)
    • deltaMillis

      public double deltaMillis()
      获取累计帧差(毫秒)
      Returns:
      累计帧差(毫秒)
    • deltaSecond

      public double deltaSecond()
      获取累计帧差(秒)
      Returns:
      累计帧差(秒)
    • nanos

      public double nanos()
      Returns:
      当前帧(纳秒)
    • millis

      public double millis()
      Returns:
      当前帧(毫秒)
    • second

      public double second()
      Returns:
      当前帧(秒)
    • getPrefFPS

      public int getPrefFPS()
      预设 FPS