2011-08-26 46 views
5

我刚开始学习有关Graphics2D类的基础知识,到目前为止,我可以绘制不同的对象并实现ActionListener以实际在屏幕上将它们移动到onKeyPress。到目前为止,虽然我想要做更复杂的事情。我想给我的对象一个路径,并在该特定路径上对其进行动画处理。如何在Graphics2D上下文中的Path2D对象上设置动画矩形

类似的,我会画一条天空的线,一架飞机应该坚持绘制的线,并保持它自我飞行的特定线。现在有可能吗?

我不需要任何形式的代码,但很少有不同的方法或想法会让我开始工作。我的想法的可视化阐述如下。

起点:

enter image description here

终点:

enter image description here

现在,如上图所示,我的黄色框(在未来的平面)应与给定的路径坚持同时动画(路径灰线)

我的研究,到目前为止,

我已搜查我的时髦词汇,如java的路径,发现Path2DGeneralPath类,有谁知道,如果我可以用它来解决这个问题。

谢谢

+0

他们的javadoc说什么? http://download.oracle.com/javase/6/docs/api/java/awt/geom/Path2D.html –

+0

谢谢JB我以前读过它,但无法理解,但下面的答案澄清和阐述了基本概念。 – doNotCheckMyBlog

回答

2

太棒了!

它让我想起了自己在IT方面的第一步。我喜欢所有这些简单的数学东西,但这让事情在屏幕上移动。 :)

你需要的实际上是一个线性插值。还有其他种类的插值和一些API提供的概念一个很好的封装,但这里是主要的想法,你会经常需要这个东西:

必须重写你的路径

y = f (x) 

为时间函数:

在时间0时该项目将在开始位置,在时间1它将达到结束。然后如你所愿地增加时间(t)(例如每ms为0.001)。

所以这里是一个简单的线性路径公式:

x = xstart + (xend-xstart) * t 
y = ystart + (yend-ystart) * t 

当t变化时,你的对象将只沿路径直线运动,线性有速度将所有的道路上不断。你可以在年底比如想象某种gravtity的吸引力,这将通过二次加速建模(T^2,而不是T)...

问候, 斯特凡

+0

好的解释,我会考虑你的公式来动画。谢谢...享受NHL! – doNotCheckMyBlog

1

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

其次,使能够采取路径并将其转化为点。然后当你要做曲线时,你实际上只是沿着那条曲线从一个点到另一个点。

这是最基本的方式来做到这一点,并适用于大多数情况。

+0

所以我可以通过Path2D创建路径并调用方法,getIteratorPath会给我有关路径的信息?这样以及路径上的x,y位置?这听起来很容易,让我开始,感谢glowcoder – doNotCheckMyBlog

1

你说的是简单的2D图形和精灵。如果这就是你需要的全部,那么对于Java看看Java 2D Sprites如果你更倾向于或最终会用相机的观点,并希望从不同角度观看动画,那么使用Java 3D from the OpenSource Java 3D.org即可。无论哪种方式,你想要的只是一个简单的线条翻译,在2D或3D中都很简单。

1

你可以尝试去线槽我的开源大学项目代码 - LANSim。代码在代码菜单中可用。它与你正在做的事情类似。

+0

感谢分享,看起来不错,我会仔细看看 – doNotCheckMyBlog