This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.imyeyu.fx.bean;
|
||||
|
||||
import com.sun.scenario.animation.SplineInterpolator;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 贝塞尔曲线,动画运动方式,常用 {@link #EASE_OUT_EXPO}
|
||||
@@ -8,38 +9,50 @@ import com.sun.scenario.animation.SplineInterpolator;
|
||||
* @author 夜雨
|
||||
* @since 2022-02-16 22:43
|
||||
*/
|
||||
@Getter
|
||||
public enum Interpolates {
|
||||
|
||||
/** EASE ( .25, .1, .25, 1) */ EASE ( .25, .1, .25, 1),
|
||||
/** LINEAR ( 0, 0, 1, 1) */ LINEAR ( 0, 0, 1, 1),
|
||||
/** EASE_IN ( .42, 0, 1, 1) */ EASE_IN ( .42, 0, 1, 1),
|
||||
/** EASE_OUT ( 0, 0, .58, 1) */ EASE_OUT ( 0, 0, .58, 1),
|
||||
/** EASE_IN_OUT ( .42, 0, .58, 1) */ EASE_IN_OUT ( .42, 0, .58, 1),
|
||||
/** EASE_IN_SINE ( .47, 0, .745, .715) */ EASE_IN_SINE ( .47, 0, .745, .715),
|
||||
/** EASE_OUT_SINE ( .39, .575, .565, 1) */ EASE_OUT_SINE ( .39, .575, .565, 1),
|
||||
/** EASE_IN_OUT_SINE (.445, .05, .55, .95) */ EASE_IN_OUT_SINE (.445, .05, .55, .95),
|
||||
/** EASE_IN_QUAD ( .55, .085, .68, .53) */ EASE_IN_QUAD ( .55, .085, .68, .53),
|
||||
/** EASE_OUT_QUAD ( .25, .46, .45, .94) */ EASE_OUT_QUAD ( .25, .46, .45, .94),
|
||||
/** EASE_IN_OUT_QUAD (.455, .03, .515, .955) */ EASE_IN_OUT_QUAD (.455, .03, .515, .955),
|
||||
/** EASE_IN_CUBIC ( .55, .055, .675, .19) */ EASE_IN_CUBIC ( .55, .055, .675, .19),
|
||||
/** EASE_OUT_CUBIC (.215, .61, .355, 1) */ EASE_OUT_CUBIC (.215, .61, .355, 1),
|
||||
/** EASE_IN_OUT_CUBIC (.645, .045, .355, 1) */ EASE_IN_OUT_CUBIC (.645, .045, .355, 1),
|
||||
/** EASE_IN_QUART (.895, .03, .685, .22) */ EASE_IN_QUART (.895, .03, .685, .22),
|
||||
/** EASE_OUT_QUART (.165, .84, .44, 1) */ EASE_OUT_QUART (.165, .84, .44, 1),
|
||||
/** EASE_IN_OUT_QUART ( .77, 0, .175, 1) */ EASE_IN_OUT_QUART ( .77, 0, .175, 1),
|
||||
/** EASE_IN_QUINT (.755, .05, .855, .06) */ EASE_IN_QUINT (.755, .05, .855, .06),
|
||||
/** EASE_OUT_QUINT ( .23, 1, .32, 1) */ EASE_OUT_QUINT ( .23, 1, .32, 1),
|
||||
/** EASE_IN_OUT_QUINT ( .86, 0, .07, 1) */ EASE_IN_OUT_QUINT ( .86, 0, .07, 1),
|
||||
/** EASE_IN_EXPO ( .95, .05, .795, .035) */ EASE_IN_EXPO ( .95, .05, .795, .035),
|
||||
/** EASE_OUT_EXPO ( .19, 1, .22, 1) */ EASE_OUT_EXPO ( .19, 1, .22, 1),
|
||||
/** EASE_IN_OUT_EXPO ( 1, 0, 0, 1) */ EASE_IN_OUT_EXPO ( 1, 0, 0, 1),
|
||||
/** EASE_IN_CIRC ( .6, .04, .98, .335) */ EASE_IN_CIRC ( .6, .04, .98, .335),
|
||||
/** EASE_OUT_CIRC (.075, .82, .165, 1) */ EASE_OUT_CIRC (.075, .82, .165, 1),
|
||||
/** EASE_IN_BACK ( .6, .28, .735, .045) */ EASE_IN_BACK ( .6, .28, .735, .045);
|
||||
/** EASE ( .25, .1, .25, 1) */ EASE(.25, .1, .25, 1),
|
||||
/** LINEAR ( 0, 0, 1, 1) */ LINEAR(0, 0, 1, 1),
|
||||
/** EASE_IN ( .42, 0, 1, 1) */ EASE_IN(.42, 0, 1, 1),
|
||||
/** EASE_OUT ( 0, 0, .58, 1) */ EASE_OUT(0, 0, .58, 1),
|
||||
/** EASE_IN_OUT ( .42, 0, .58, 1) */ EASE_IN_OUT(.42, 0, .58, 1),
|
||||
/** EASE_IN_SINE ( .47, 0, .745, .715) */ EASE_IN_SINE(.47, 0, .745, .715),
|
||||
/** EASE_OUT_SINE ( .39, .575, .565, 1) */ EASE_OUT_SINE(.39, .575, .565, 1),
|
||||
/** EASE_IN_OUT_SINE (.445, .05, .55, .95) */ EASE_IN_OUT_SINE(.445, .05, .55, .95),
|
||||
/** EASE_IN_QUAD ( .55, .085, .68, .53) */ EASE_IN_QUAD(.55, .085, .68, .53),
|
||||
/** EASE_OUT_QUAD ( .25, .46, .45, .94) */ EASE_OUT_QUAD(.25, .46, .45, .94),
|
||||
/** EASE_IN_OUT_QUAD (.455, .03, .515, .955) */ EASE_IN_OUT_QUAD(.455, .03, .515, .955),
|
||||
/** EASE_IN_CUBIC ( .55, .055, .675, .19) */ EASE_IN_CUBIC(.55, .055, .675, .19),
|
||||
/** EASE_OUT_CUBIC (.215, .61, .355, 1) */ EASE_OUT_CUBIC(.215, .61, .355, 1),
|
||||
/** EASE_IN_OUT_CUBIC (.645, .045, .355, 1) */ EASE_IN_OUT_CUBIC(.645, .045, .355, 1),
|
||||
/** EASE_IN_QUART (.895, .03, .685, .22) */ EASE_IN_QUART(.895, .03, .685, .22),
|
||||
/** EASE_OUT_QUART (.165, .84, .44, 1) */ EASE_OUT_QUART(.165, .84, .44, 1),
|
||||
/** EASE_IN_OUT_QUART ( .77, 0, .175, 1) */ EASE_IN_OUT_QUART(.77, 0, .175, 1),
|
||||
/** EASE_IN_QUINT (.755, .05, .855, .06) */ EASE_IN_QUINT(.755, .05, .855, .06),
|
||||
/** EASE_OUT_QUINT ( .23, 1, .32, 1) */ EASE_OUT_QUINT(.23, 1, .32, 1),
|
||||
/** EASE_IN_OUT_QUINT ( .86, 0, .07, 1) */ EASE_IN_OUT_QUINT(.86, 0, .07, 1),
|
||||
/** EASE_IN_EXPO ( .95, .05, .795, .035) */ EASE_IN_EXPO(.95, .05, .795, .035),
|
||||
/** EASE_OUT_EXPO ( .19, 1, .22, 1) */ EASE_OUT_EXPO(.19, 1, .22, 1),
|
||||
/** EASE_IN_OUT_EXPO ( 1, 0, 0, 1) */ EASE_IN_OUT_EXPO(1, 0, 0, 1),
|
||||
/** EASE_IN_CIRC ( .6, .04, .98, .335) */ EASE_IN_CIRC(.6, .04, .98, .335),
|
||||
/** EASE_OUT_CIRC (.075, .82, .165, 1) */ EASE_OUT_CIRC(.075, .82, .165, 1),
|
||||
/** EASE_IN_BACK ( .6, .28, .735, .045) */ EASE_IN_BACK(.6, .28, .735, .045);
|
||||
|
||||
/** 插值器 */
|
||||
final SplineInterpolator value;
|
||||
|
||||
final double x1, y1, x2, y2;
|
||||
/** 控制的 1 的横坐标 */
|
||||
final double x1;
|
||||
|
||||
/** 控制点 1 的纵坐标 */
|
||||
final double y1;
|
||||
|
||||
/** 控制点 2 的横坐标 */
|
||||
final double x2;
|
||||
|
||||
/** 控制点 2 的纵坐标 */
|
||||
final double y2;
|
||||
|
||||
Interpolates(double px1, double py1, double px2, double py2) {
|
||||
x1 = px1;
|
||||
@@ -55,7 +68,7 @@ public enum Interpolates {
|
||||
* @param precision 精度,构造数据量,不可小于 4
|
||||
* @return 贝塞尔点列表,第二维 [0]: x 轴坐标,[1]: y 轴坐标
|
||||
*/
|
||||
public double[][] buildBezierPoint(double precision) {
|
||||
public double[][] buildBezierPoint(long precision) {
|
||||
return buildBezierPoint(1, precision);
|
||||
}
|
||||
|
||||
@@ -66,11 +79,10 @@ public enum Interpolates {
|
||||
* @param precision 精度,构造数据量,不可小于 4
|
||||
* @return 贝塞尔点列表,第二维 [0]: x 轴坐标,[1]: y 轴坐标
|
||||
*/
|
||||
public double[][] buildBezierPoint(double boost, double precision) {
|
||||
public double[][] buildBezierPoint(double boost, long precision) {
|
||||
if (precision < 4) {
|
||||
throw new IllegalArgumentException("precision can not less than 4: " + precision);
|
||||
}
|
||||
precision = 1D / precision;
|
||||
|
||||
Double[][] cps = new Double[4][2];
|
||||
cps[0][0] = cps[0][1] = 0D;
|
||||
@@ -112,7 +124,7 @@ public enum Interpolates {
|
||||
* @param precision 精度,构造数据量,不可小于 4
|
||||
* @return 贝塞尔点列表,值为 y 轴坐标
|
||||
*/
|
||||
public double[] buildBezierPointValue(double precision) {
|
||||
public double[] buildBezierPointValue(long precision) {
|
||||
return buildBezierPointValue(1, precision);
|
||||
}
|
||||
|
||||
@@ -123,7 +135,7 @@ public enum Interpolates {
|
||||
* @param precision 精度,构造数据量,不可小于 4
|
||||
* @return 贝塞尔点列表,值为 y 轴坐标
|
||||
*/
|
||||
public double[] buildBezierPointValue(double boost, double precision) {
|
||||
public double[] buildBezierPointValue(double boost, long precision) {
|
||||
double[][] points = buildBezierPoint(boost, precision);
|
||||
double[] result = new double[points.length];
|
||||
for (int i = 0; i < points.length; i++) {
|
||||
@@ -132,48 +144,4 @@ public enum Interpolates {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取控制点 1 的横坐标
|
||||
*
|
||||
* @return 控制的 1 的横坐标
|
||||
*/
|
||||
public double getX1() {
|
||||
return x1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取控制点 1 的纵坐标
|
||||
*
|
||||
* @return 控制的 1 的纵坐标
|
||||
*/
|
||||
public double getY1() {
|
||||
return y1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取控制点 2 的横坐标
|
||||
*
|
||||
* @return 控制的 2 的横坐标
|
||||
*/
|
||||
public double getX2() {
|
||||
return x2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取控制点 2 的纵坐标
|
||||
*
|
||||
* @return 控制的 2 的纵坐标
|
||||
*/
|
||||
public double getY2() {
|
||||
return y2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取插值器
|
||||
*
|
||||
* @return 插值器
|
||||
*/
|
||||
public SplineInterpolator getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import javafx.concurrent.Task;
|
||||
* @author 夜雨
|
||||
* @since 2022-01-08 16:24
|
||||
*/
|
||||
abstract class PublicTask<T> extends Task<T> {
|
||||
public abstract class PublicTask<T> extends Task<T> {
|
||||
|
||||
/**
|
||||
* 更新数据
|
||||
|
||||
@@ -11,6 +11,7 @@ import javafx.util.Duration;
|
||||
import com.imyeyu.fx.task.RunAsyncScheduled;
|
||||
import com.imyeyu.java.bean.Callback;
|
||||
import com.imyeyu.java.bean.CallbackArg;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
@@ -74,7 +75,8 @@ public class AnimationRenderer {
|
||||
/** 标准帧生成时间(纳秒) */
|
||||
private double NPF;
|
||||
|
||||
/** 预设渲染帧率 */
|
||||
/** 预设 FPS */
|
||||
@Getter
|
||||
private int prefFPS;
|
||||
|
||||
/** 默认构造,60 FPS */
|
||||
@@ -222,15 +224,6 @@ public class AnimationRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取预设 FPS
|
||||
*
|
||||
* @return 预设 FPS
|
||||
*/
|
||||
public int getPrefFPS() {
|
||||
return prefFPS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 预设 FPS,渲染器会尽量匹配此帧率渲染,可能会突破少许,系统资源紧张时实际渲染帧率会低于预设
|
||||
*
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.imyeyu.fx.utils;
|
||||
|
||||
import javafx.stage.DirectoryChooser;
|
||||
import javafx.stage.Window;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Objects;
|
||||
@@ -12,6 +13,7 @@ import java.util.Objects;
|
||||
* @author 夜雨
|
||||
* @version 2022-04-28 17:48
|
||||
*/
|
||||
@Getter
|
||||
public class DirectorySelector {
|
||||
|
||||
/** 选择器 */
|
||||
@@ -60,13 +62,4 @@ public class DirectorySelector {
|
||||
public File show(Window window) {
|
||||
return chooser.showDialog(window);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取选择器
|
||||
*
|
||||
* @return 选择器
|
||||
*/
|
||||
public DirectoryChooser getChooser() {
|
||||
return chooser;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.imyeyu.fx.utils;
|
||||
|
||||
import javafx.stage.FileChooser;
|
||||
import javafx.stage.Window;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -13,6 +14,7 @@ import java.util.Objects;
|
||||
* @author 夜雨
|
||||
* @version 2022-04-14 19:38
|
||||
*/
|
||||
@Getter
|
||||
public class FileSelector {
|
||||
|
||||
/** 选择器 */
|
||||
@@ -91,13 +93,4 @@ public class FileSelector {
|
||||
public File save(Window window) {
|
||||
return chooser.showSaveDialog(window);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取选择器
|
||||
*
|
||||
* @return 选择器
|
||||
*/
|
||||
public FileChooser getChooser() {
|
||||
return chooser;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.imyeyu.fx.utils;
|
||||
|
||||
import javafx.util.StringConverter;
|
||||
import com.imyeyu.java.ref.Ref;
|
||||
import com.imyeyu.utils.Time;
|
||||
import javafx.util.StringConverter;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.time.LocalDate;
|
||||
@@ -52,11 +52,7 @@ public class StringConverters {
|
||||
if (object == null) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
return Ref.getFieldValue(object, "name", String.class);
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return object.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user