1

嗨,我在解决一个问题时遇到了问题,我需要解决这个问题才能继续我正在做的项目。我想将一条线从 JPanel 的一角动画到由用户输入的角度确定的面板边框上的任意点。

很多与此类似的帖子都建议使用增加一条线的 x2、y2 的摆动计时器,但我的问题是我不知道要绘制的线,因为它是由我必须编写的函数确定的考虑到角度(斜率)。

假设它恰好是 30 度......我不能只增加 x2 和 y2 因为我不知道上升和运行是以像素为单位的动画正确的角度线......

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

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


从另一篇文章编辑
: 嗨,我正在尝试做一个项目,该项目基本上显示了一个台球穿过台球桌的路径。我了解基本的三角函数,但我没有使用 Java 动画的经验。

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

我知道如何使用paint()“绘制”线条,但我怎样才能轻松地对其进行动画处理。

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

有没有更简单的方法可以做到这一点,或者我至少在正确的轨道上?我正在自己研究,但我很担心,因为它是针对学校的一个软件工程项目,而动画方面确实阻碍了我们的团队。

4

2 回答 2

3

一旦你弄清楚了三角函数,就去Math上课。这些方法包括计算顶部顶点所需像素高度所需的常用 sin、cos、tan 方法。但请注意,这些方法以弧度为单位,因此在使用它们时需要将它们从度数转换为弧度。 Math.PI将对此有所帮助。

于 2012-04-15T07:26:15.077 回答
1

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

是的,这差不多。

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

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

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