Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Graphics2D上下文中设置Path2D对象上矩形的动画_Java_Java 2d_Graphics2d - Fatal编程技术网

Java 如何在Graphics2D上下文中设置Path2D对象上矩形的动画

Java 如何在Graphics2D上下文中设置Path2D对象上矩形的动画,java,java-2d,graphics2d,Java,Java 2d,Graphics2d,我刚刚开始学习Graphics2D类的基础知识,到目前为止,我能够绘制不同的对象并实现ActionListener,通过onKeyPress在屏幕上实际移动它们。到目前为止还不错,但我想做一些更复杂的事情。我想给我的对象指定一个路径,并仅在该特定路径上设置动画 比如,我会在天空中画一条线,飞机应该坚持这条线,并保持自己在这条线上飞行。现在有可能吗 我不需要任何类型的代码,但很少有不同的方法或想法可以让我开始这方面的工作。下面是对我的想法的具体阐述 起点: 终点: 现在,如上图所示,我的黄色框

我刚刚开始学习Graphics2D类的基础知识,到目前为止,我能够绘制不同的对象并实现
ActionListener
,通过
onKeyPress
在屏幕上实际移动它们。到目前为止还不错,但我想做一些更复杂的事情。我想给我的对象指定一个路径,并仅在该特定路径上设置动画

比如,我会在天空中画一条线,飞机应该坚持这条线,并保持自己在这条线上飞行。现在有可能吗

我不需要任何类型的代码,但很少有不同的方法或想法可以让我开始这方面的工作。下面是对我的想法的具体阐述

起点:

终点:

现在,如上图所示,我的黄色框(在未来的平面中)在设置动画(路径灰线)时应与给定的路径保持一致

我目前的研究,

我搜索了我的热门词汇,比如java中的path,找到了
Path2D
GeneralPath
类,有人知道我是否可以用它来解决这个问题吗


谢谢

首先,让您能够从a点移动到b点。这是用简单代数完成的

第二,建立一个路径并将其转换为点的能力。当你要做曲线时,你实际上只是沿着曲线从一点到另一点移动


这是最基本的方法,适用于大多数情况。

您所说的是简单的2D图形和精灵。如果这就是Java所需要的一切,那么看看您是否更倾向于或最终将使用摄影机透视图,并希望使用Java 3D从不同角度观看动画。无论哪种方式,您都需要沿直线简单地平移对象,无论是二维还是三维都非常简单。

太棒了

它让我想起了我的第一步。我是多么喜欢这些简单的数学知识,但却能让屏幕上的东西动起来。:)

实际上你需要的是一个线性插值。还有其他类型的插值,一些api为这个概念提供了一个很好的封装,但这里是主要思想,您经常需要这些东西:

你必须重写你的路径

y = f (x ) 
作为时间的函数:

在时间0,项目将处于开始位置,在时间1,项目将到达结束位置。然后你可以按你的意愿增加时间(t)(例如每毫秒0.001)

下面是简单线性路径的公式:

x = xstart + (xend-xstart) * t
y = ystart + (yend-ystart) * t
当t变化时,对象将沿路径线性移动,线性速度在所有路径上都是恒定的。你们可以想象在最后有一种怀孕的吸引力,例如,这可以用二次加速度(t^2而不是t)来模拟

问候,,
Stephane

您可以尝试使用我的开源大学项目的代码-。它的代码在代码菜单中可用。它的功能与您正在尝试的功能类似。

他们的javadoc说明了什么?谢谢JB,我以前读过,但不明白,但下面的答案已经澄清和阐述了基本概念。所以我可以通过Path2D创建路径并调用方法,getIteratorPath会给我有关路径的信息吗?路径上的x和y位置是什么?这听起来很容易,让我开始,谢谢GooCooDrice解释,我会考虑你的公式动画。谢谢享受NHL!