动画从一个点到一个点绘制的线

时间:2012-04-15 03:30:18

标签: java swing animation javafx

您好我正在解决一个问题,我需要解决这个问题才能继续我正在做的项目。我想为从JPanel的角落到由用户输入的角度确定的面板边界上的任意点的线条设置动画。

很多相似的帖子推荐使用摆动计时器来增加一条线的x2,y2,但我的问题是我不知道要绘制的线,因为它是由我将拥有的函数决定的写入考虑到角度(坡度)。

说它碰巧是30度...我不能只增加x2和y2,因为我不知道上升和运行是以像素为单位来设置正确的角度线.... < / p>

是否有任何功能可以帮助解决这个问题,可能是在数学或任何事情......我也在研究javafx.animation

我不是在寻找解决方案,只是为了指向正确的方向我猜 感谢

修改
来自另一篇文章:
嗨,我正在尝试做一个项目,基本上显示池球穿越台球桌的路径。我理解基础的三角函数,但我没有Java动画的经验。

现在我有一个用作池表的JPanel。球总是从某一点开始。

我知道如何使用paint()“绘制”这条线,但我怎样才能轻松制作动画。

我的预感是通过使用带有摆动计时器的循环来为球的路径设置动画(基本上是生长线的动画),导致每次传递延迟并在循环的每次传递中绘制线的下一个像素。我的问题是如何引用这些像素值。例如,如果线是水平的或垂直的,你只需增加y2或x2值并重新绘制每次通过的线,但如果线的斜率能够改变,我理解如何获得线的端点但是每个线上的有效像素坐标。我可以“绘制”一个线对象,并以某种方式引用它的路径中的每个像素。我看了一下PathIterator(),但我不相信我走在正确的轨道上(或者我更担心的是我不是在最简单,更高级别的赛道上)。

有更简单的方法可以做到这一点,还是我至少在正确的轨道上?我正在自己研究,但我很担心,因为它是在学校的软件工程项目,动画方面真的让我们的团队回来。

2 个答案:

答案 0 :(得分:3)

一旦弄清楚三角函数,请查看Math类。 methods包括计算顶部顶点所需像素高度所需的通常的sin,cos,tan方法。但请注意,这些方法采用弧度角度,因此在使用它们时需要将它们从度数转换为弧度。 Math.PI会对此有所帮助。

答案 1 :(得分:1)

  

我的预感是通过使用带有摆动计时器的循环来为球的路径设置动画(基本上是生长线的动画),每次传递都会导致延迟,并且每次循环都会绘制线的下一个像素。

是的,那是对的。

  

我的问题是如何引用这些像素值。

我不担心像素值。而是将您的问题分成其组成部分 -

  • 为您的类提供一个int常量来表示时间片长度。您可能希望尝试这一点。
  • 拥有球的物理代码,可以了解球每个时间段的位置
  • 有单独的代码在当前位置绘制球。
  • 计时器将更新时间,并调用您的物理代码来更新球的位置。物理部分将设置描述此位置的类字段(可能是ballX和ballY变量),然后调用repaint(),以便JPanel的paintComponent(...)方法可以使用ballX和ballY变量来绘制球正确的位置。
  • 对于逻辑与程序的视图部分使用单独的类是最好的,但在早期阶段可能没有必要。