在路径上移动对象(圆圈)

时间:2012-08-28 08:21:18

标签: java graphics2d

我需要移动一个对象,在我的例子中是一个给定路径上的String。实际上路径可能是半圈。如附图所示,String应该出现在另一个对象后面,沿着路径移动并消失在第二个对象后面(两个图像)。我不知道如何开始...希望有人能帮助我。提前谢谢。

enter image description here

1 个答案:

答案 0 :(得分:3)

创建一个新的Thread,它将处理文本移动的逻辑。在其run()方法中,您添加一个循环,该循环将更改每次迭代时的文本位置。此外,在更改文字位置后,您必须在定义已覆盖的repaint()paint()的组件上调用paintComponent()

每次迭代后,线程应该睡眠很短的时间。睡眠50毫秒意味着你将大致每秒大约20帧。

现在进行数学计算。让我们假设您知道一个点是圆的中心(在两个图像之间的中间点之下的某处)和文本的起始点。有了这个,你可以将圆半径计算为2点之间的距离:

d = Math.sqrt((c.x - p.x) * (c.x - p.x) + (c.y - p.y) * (c.y - p.y))

为了使文字在圆圈上移动,上述距离需要保持不变。因此,您可以做的是将x递增一个常量值并计算文本的新y。

d = Math.sqrt((c.x - p.x) * (c.x - p.x) + (c.y - p.y) * (c.y - p.y))

在上面的公式中,您知道值d, c.x, c.y, p.x(您刚刚计算并递增了它)。您只需要p.y的值,即:

p.y = c.y - Math.sqrt(d * d - ((c.x - p.x) * (c.x - p.x))