在 Delphi 的TAnimation中扩展TInterpolationType

brtdzjyr  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在使用FMX框架开发一个 Delphi 应用程序,我正在尝试扩展TAnimation类以添加我自己的自定义插值算法。TAnimation类使用枚举类型TInterpolationType来允许用户选择他们希望用途:使用的插值算法:

TInterpolationType = (Linear, Quadratic, Cubic, Quartic, Quintic, Sinusoidal, Exponential, Circular, Elastic, Back, Bounce);

这可以通过插值属性设置:

property Interpolation: TInterpolationType read FInterpolation write FInterpolation default TInterpolationType.Linear;

还有许多其他可用的插值算法(例如,加速插值、减速插值、预测插值、犹豫插值、Spring插值等),我想更新TAnimation类,以便可以定义和使用自己的插值算法。
我可以用什么来替换(或扩展)Interpolation属性,以便我也可以包含自己的自定义插值算法?
现在我想在TInterpolationType = (Linear, Quadratic, Cubic, Quartic, Quintic, Sinusoidal, Exponential, Circular, Elastic, Back, Bounce, CUSTOM);中添加“自定义”并添加一个OnCustomInterpolation事件,但想知道他们是否是一个更优雅的解决方案?

nle07wnf

nle07wnf1#

最后我决定在TInterpolationType =(Linear,Quadratic,Cubic,Quartic,Quintic,Sinusoidal,Exponential,Circular,Elastic,Back,Bounce,CUSTOM)中添加“Custom”;并添加事件OnCustomInterpolation
代码在https://github.com/MagicFoundation/Alcinoe可见

插值动画

TALAnimation组件是 Delphi 的基本TAAnimation对象的一个改进迭代,为移动的平台精心定制。通过放弃传统的Timer机制,而采用特定于平台的技术,该组件为移动的用户提供了大大改进的动画体验。在Android上,动画与Choreographer无缝集成,确保它们与设备的刷新率完美同步。与此同时,在iOS上,DisplayLink的精度得到了利用,从而实现了优化和流畅的动画渲染。除了这些基本的变化,最显著的增强之一是支持自定义插值算法的能力。这为开发人员提供了设计独特而复杂的动画模式的灵活性,超越了传统的缓入或缓出序列。

SpringForce Animation

受Android的SpringForce的启发,TALSpringForceAnimation组件将基于物理的动画的阴谋带到了 Delphi 平台。此组件捕获受Spring力学影响的对象的真实动态。生成的动画是拉伸、反弹和稳定的动画,反映了现实世界的行为,并为用户提供了切实的现实感。开发人员还可以调整Spring的各种物理特性,例如刚度和阻尼比。这确保了可以实现广泛的动画行为,以满足不同应用程序的特定细微差别。

相关问题