Java 设置从点到点绘制的线的动画

Java 设置从点到点绘制的线的动画,java,swing,animation,javafx,Java,Swing,Animation,Javafx,嗨,我有一个问题,我需要解决一个问题,以继续我正在做的项目。我想制作一条线的动画,从JPanel的一角到由用户输入的角度确定的面板边界上的任意点 很多类似的帖子都建议使用摆动计时器,增加直线的x2,y2,但我的问题是,我不知道要画的直线,因为它是由我必须编写的函数决定的,该函数考虑了角度(斜率) 假设它正好是30度……我不能仅仅增加x2和y2,因为我不知道上升和运行是什么,以像素为单位来设置正确角度线的动画 是否有任何函数可以帮助实现这一点,可能是在数学或其他方面……我也在研究javafx.an

嗨,我有一个问题,我需要解决一个问题,以继续我正在做的项目。我想制作一条线的动画,从JPanel的一角到由用户输入的角度确定的面板边界上的任意点

很多类似的帖子都建议使用摆动计时器,增加直线的x2,y2,但我的问题是,我不知道要画的直线,因为它是由我必须编写的函数决定的,该函数考虑了角度(斜率)

假设它正好是30度……我不能仅仅增加x2和y2,因为我不知道上升和运行是什么,以像素为单位来设置正确角度线的动画

是否有任何函数可以帮助实现这一点,可能是在数学或其他方面……我也在研究javafx.animation

我想,我并不是在寻找一个解决方案,而仅仅是指向正确的方向 谢谢

编辑
从另一个帖子:
嗨,我正在尝试做一个项目,它基本上显示了一个台球穿过一个台球桌的路径。我了解基本的三角学,但没有Java动画方面的经验

现在我有一个JPanel,它作为池表运行。球总是从某一点开始

我知道如何使用paint()来“绘制”直线,但如何轻松地为其设置动画

我的直觉是通过使用一个带有摆动计时器的循环来设置球的路径动画(基本上是设置一条生长线的动画),该循环会导致每次传球的延迟,并在每次传球时绘制线的下一个像素。我的问题是如何引用这些像素值。例如,如果直线是水平或垂直的,您可以只增加y2或x2值,并在每次通过时重新绘制直线,但如果直线的坡度能够改变,我了解如何获得直线的端点,但如何获得直线上的每个活动像素坐标。我可以“画”一个线条对象,然后用某种方法引用它路径中的每个像素吗。我已经对PathIterator()进行了一些研究,但我不确定自己是否走上了正确的轨道(或者我更担心的是我没有走上最简单、更高级的轨道)


有没有更简单的方法来做到这一点,或者我至少走在了正确的轨道上?我自己在研究,但我很担心,因为这是学校里的一个软件工程项目,动画方面确实阻碍了我们小组的发展。

一旦你弄明白了三角学,就去上数学课。其中包括计算顶点所需像素高度所需的常用sin、cos、tan方法。但是要注意,这些方法以弧度表示角度,因此在使用时必须将角度从度转换为弧度。这会很有帮助。

一旦你算出了三角学,就去上数学课。其中包括计算顶点所需像素高度所需的常用sin、cos、tan方法。但是要注意,这些方法以弧度表示角度,因此在使用时必须将角度从度转换为弧度。这会有帮助的

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

是的,差不多是这样

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

我不会担心像素值。相反,将你的问题分成几个组成部分--

  • 为类指定一个int常量来表示时间片长度。您可能希望对此进行试验
  • 有球的物理代码,可以理解球在每个时间段的位置
  • 使用单独的代码在球的当前位置绘制球
  • 计时器将更新时间,并调用物理代码来更新球的位置。物理部分将设置描述此位置的类字段(可能是ballX和ballY变量),然后调用
    repaint()
    ,以便JPanel的
    paintComponent(…)
    方法可以使用ballX和ballY变量在正确的位置绘制球
  • 对程序的逻辑和视图部分使用单独的类是最好的,但在早期阶段可能没有必要
我的直觉是通过使用一个带有摆动计时器的循环来设置球的路径动画(基本上是设置一条生长线的动画),该循环会导致每次传球的延迟,并在每次传球时绘制线的下一个像素

是的,差不多是这样

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

我不会担心像素值。相反,将你的问题分成几个组成部分--

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

我建议学习/复习一些基本的三角学。如果给定一条直线的角度,就得到它的斜率,不需要JavaFx。正如上面所建议的,阅读一些非常基本的三角学。你可以找到一些有用的