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