2

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

在此处输入图像描述

4

1 回答 1

3

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

每次迭代后,线程应该休眠一小段时间。休眠 50 毫秒意味着您将大约每秒获得 20 帧。

现在是数学。假设您知道一个点是圆的中心(位于两幅图像之间的中点下方)和文本的起点。有了这个,您可以将圆半径计算为两点之间的距离:

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(您刚刚计算并增加了它)。您只需要 py 的值,即:

p.y = c.y - Math.sqrt(d * d - ((c.x - p.x) * (c.x - p.x))
于 2012-08-28T08:26:44.020 回答