JavaFX中基于表达式的PathTransitions

在JavaFX中,您可以使用PathTransition对象为路径上的节点设置动画。 PathTransitions使用Shape对象描述它们需要沿其动画的路径。 JavaFX提供了各种类型的形状(例如,多边形,圆形,多边形,路径)。 路径形状很有趣,因为它允许您使用称为PathElement的各种移动来创建复杂的形状。 一些路径元素是ArcTo,CubicCurveTo,HLineTo,LineTo,MoveTo,QuadCurveTo,VLineTo。 他们的名字暗示着他们在做什么。

尽管PathElemetns非常适合描述复杂路径,但我发现我宁愿使用数学表达式来描述我的路径。 在数学课上使用图形的所有岁月影响了我的思维方式。 二次和三角表达式使它们具有温暖和舒适的感觉。 因此,我试图创建使用数学表达式描述的PathTransitions。 如果有人希望达成相同的目标,我会在这篇文章中描述我的解决方案。

为此,首先需要解决数学表达式的方法,例如x * sin(x)或x ^ 2/45或(x ^ 2)/ sin(x-2)或其他方法可以想像。 为此,我很幸运地偶然发现了Lawrence Dol的Software Monkey网站。 Lawrence创建了一个名为MathEval的超轻量Java类 ,该类可评估数学表达式。 该类只有31KB,非常易于使用。 我使用MathEval绘制给定表达式的点。

JavaFx类Polyline用于存储MathEval求解的标绘点,并将它们转换为PathTransition可以将其用作输入的Shape对象。

我最终创建的类称为ExpressionTransitionMaker-抱歉,没有Javadoc,但是您可以在此处找到源代码。 该类应该非常易于使用。 它有两个主要方法值得一提。 第一个是:

public void addExpressionEntry(double start, double end, double poll, GraphType type, String expression) throws IllegalArgumentException;

此方法用于添加表达式条目,该表达式条目由具有支持信息的表达式组成,例如图表上的开始和结束位置,轮询间隔和GraphType。 ExpressionTransitionMaker可以制作此GraphType枚举描述的三种不同类型的图:

public enum GraphType {vertical("y"), horizontal("x"), polar("a");private String var;GraphType(String var) {this.var = var;}public String getVar() {return var;}}

每个表达式条目都需要一个表达式。 对于水平图,表达式的形式必须为f(x); g(y)为垂直; r(a)代表极坐标。 也就是说,水平图需要一个表达式,其中唯一变量是字母“ x”,垂直图需要一个表达式,其中唯一变量是字母“ y”,极坐标图需要一个表达式,唯一的变量variable是字母“ a”,其中“ a”表示弧度的角度。 可以添加多个表达式条目。

顾名思义,水平图和垂直图分别用于分别向左和向右和向上和向下移动的图形。 极坐标图适用于沿圆形或螺旋形路径移动的图形。 如果给定负的轮询值以及适当的起点和终点,则这三个方向都可以朝相反的方向发展。

值得一提的第二种方法是:

public SequentialTransition getSequentialTransition();

因为可以在ExpressionTransitionMaker中添加多个表达式,所以SequentialTransition对象用于播放ExpressionTransitionMaker可以创建的所有PathTransition。 返回的SequentialTransition填充有多个PathTransition,每个添加的表达式一个。 SequentialTransition将按顺序播放其所有过渡。

就是这样。 ExpressionTransitionMaker中还有一个或两个其他公共方法,用户可能会发现它们很方便,但为简洁起见而被忽略。 我创建了一个简单的小应用程序,用于测试ExpressionTransitionMaker,可以在此处找到。 该应用程序可以在浏览器上播放,它允许您输入多个表达式,这些表达式用于使屏幕上的图像动起来。

如果您有任何反馈意见希望阅读。

参考:来自我们W4G合作伙伴 Jose Martinez的 JavaFX中基于表达式的PathTransitions


翻译自: https://www.javacodegeeks.com/2012/09/expression-based-pathtransitions-in.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html 显示视频列表,dvd光碟制作节目轨菜单布局,不要视频缩略图,只显示文件列表...

“如何在刻录视频光盘时自定义制作菜单?实现的效果就是当光盘插入DVD影碟机播放时,首先会出现一个所有视频文件列表的菜单(节目轨菜单),就相似于音乐CD曲目表一样,不需要有视频缩略图,可通过遥控器选择性播放列表中某一…

v3学院教你学习-task和function的异同

v3学院教你学习-task和function的异同 task(任务)与function(函数)的不同 任务与函数主要有以下四点不同: l 函数只能与主模块共用一个仿真时间单位,而任务定义自己的仿真时间单位。 l 函数不能启动任务&am…

Spring事件的观察者模式

介绍 观察者模式的本质是“定义对象之间的一对多依赖关系,以便当一个对象改变状态时,其所有依赖关系都会得到通知并自动更新。” GoF。 观察者模式是发布/订阅模式的子集,它允许许多观察者对象查看事件。 可以在不同的情况下使用此模式&#…

jQuery选择什么版本 1.x? 2.x? 3.x?

目前jQuery有三个大版本: 1.x:兼容ie678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)2.x:不兼容ie678&a…

Delta DVP 系列 PLC 各装置 Modbus 地址

此Modbus地址表以 1 为基础地址 Device Range Type DVP address (Hex) Modbus address (Dec) Effective ES/EX/SS SA/SX/SC EH S 000~255 bit 0000~00FF 000001~000256 0~127 0~1024 0~1024 S 256~511 bit 0100~01FF 000247~000512 S 512~767 bit 020…

Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”...

今天遇到了两个关于Reporting Service的问题, 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 。具体情况请见下面描述。 1:在修改报表的订阅后,保存时出现下面错误: 提示:报表服务器数据库…

Java 7:HashMap与ConcurrentHashMap

从我过去有关性能的文章和HashMap案例研究中可能已经看到,Java线程安全性问题可以很轻松地使Java EE应用程序和Java EE容器崩溃。 在对Java EE性能问题进行故障排除时,我观察到的最常见问题之一是由非线程安全的HashMap get()和pu…

计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...

网络技术一、单选:1. 在计算机网络中,表征数据传输可靠性的指标是( )。A?误码率 B?频带利用率C?信道容量 D?传输速率参考答案:A2. 和通信网络相比,计算机网络最本质的功能是( )。A?数据通信 B?资源共享C?提高计算机的可靠性…

【2017-03-02】集合、结构体、枚举

集合和数组的差别: 数组:同一类型,固定长度集合:不同类型,不固定长度 一、普通集合(弱类型) 1、ArryList 使用集合首先要引用命名空间。 或者在ArryList上右键找“解析”。 2、集合的定义&#…

Hibernate懒/急加载示例

这篇文章将重点讨论为什么以及如何在应用程序中使用称为LAZY和EAGER加载的概念,以及如何使用Spring的休眠模板以EAGER方式加载LAZY实体。 当然,正如标题本身所暗示的那样,我们将通过一个示例来说明这一点。 场景就是这样; 您是一…

读者使用计算机终端是指,全国2010年10月自学考试管理系统中计算机应用真题及答案...

A.上级模块向下级模块传递控制信号B.下级模块对上级模块传递控制信号C.同级模块之间传递数据或控制信号D.上级模块向下级模块传递数据信号18.“客户”数据表结构为:客户编号、手机号、购物金额,合理的字段类型为( )A.字符型,字符型&#xff0…

软件测试HW02-------fault error failure

程序一 问题一:i应该>0; 问题二: x为空 问题三:test x[2, 3, 5]; y 3;问题四:test: x[2]; y 3;程序二问题一:循环应该反过来;问题二:无;问题三:test:x[1];问题四:test: x[1,2,3…

Mathematica图片局部变色

这篇博客来源于Stack-Exchange上的一个帖子,问题描述如下:如何将图中的红球变为蓝球? 这个问题下面有很多答案,我选了最好的一个答案,代码如下 img Import["C:/Users/1/Desktop/red.jpg"]; getReds[x_Image…

在WebLogic 12c上运行RichFaces

我最初以为我可以在几个月前写这篇文章。 但是我最终被不一样的事情所淹没。 其中之一是,它无法像我在4.0版本中那样简单地启动RichFaces展示柜。 有了所有的JMS magic和不同的提供者检查,这已经成为简单构建和部署它的挑战。 无论如何,我愿意…

Spring Boot系列教程一:Eclipse安装spring-tool-suite插件

一.前言 一直使用eclipse,个人习惯选用Eclipsespring-tool-suite进行开发,特别注意Eclipse要选用对应的spring-tool-suite进行安装,这点笔者浪费了好长时间,以下为对应的版本。eclipse-kepler.4.3.1–>springsource-tool-suite…

湖南工程学院计算机网络考试,湖南工程学院 计算机网络期末试卷试题

湖南工程学院 计算机网络期末试卷试题湖南工程学院 计算机网络 期末试题(计算机10级,90%的题目)1 从逻辑功能上看,计算机网络可分为哪两个子网?答:通信子网和资源子网 2 数据链路层的最基本功能答:数据链路层的最基本的功能是向该层用户提供…

C#设计模式(11)——外观模式(Facade Pattern)

一、引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ”门面“…

OS X Mountain Lion上的多个Java版本

在Mountain Lion之前,Java被捆绑在OS X中。似乎在升级期间,我在计算机上安装的Java 6版本被删除了。 显然,在升级过程中卸载Java的原因是Java运行时存在的安全问题。通过这种方式,您不得不安装可解决此安全问题的最新版本。 所以我…

Oracle锁机制的总结【转】

最近在研究Oracle锁机制的时候发现网上的资料鱼龙混杂将,很多将问题复杂化,让人感觉没有条理性。经过查询原始理论资料,总结如下: 在数据库理论中,我们知道。我们在执行并发访问数据库表时,如果没有任何一致…

2020暨阳学院园林计算机考研考场,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼二、关键一步——院校选择我把各位同学的院校选择阶段分为以上几个阶段,因为考研这一年中,很多人的目标院校并不是固定不变的,而是随着不同阶段而改变的。学长我在大三下学期这一时间段内也多次更…