2
我需要移動一個對象,在我的情況下,一個給定的路徑上的字符串。實際上路徑可能是半圈。如附圖所示,字符串應出現在另一個對象的後面,沿着路徑移動並在第二個對象(兩個圖像)之後消失。我不知道如何開始...希望有人能幫助我。提前致謝。移動路徑上的對象(圓圈)
我需要移動一個對象,在我的情況下,一個給定的路徑上的字符串。實際上路徑可能是半圈。如附圖所示,字符串應出現在另一個對象的後面,沿着路徑移動並在第二個對象(兩個圖像)之後消失。我不知道如何開始...希望有人能幫助我。提前致謝。移動路徑上的對象(圓圈)
創建一個新的Thread
將處理邏輯文本舉動。在其run()
方法中,您將添加一個循環,以更改每次迭代的文本位置。此外,在更改文本位置後,您必須在定義paint()
或paintComponent()
的組件上調用repaint()
,該組件已被覆蓋。
每次迭代後,線程應該休眠一會兒。睡50ms意味着你將大致獲得每秒約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))
感謝丹,但問題的目標更多的是關於幾何以及如何設置物體可以沿着的圓或位置。 – nyyrikki
查看已更新的答案。 –
謝謝丹,非常有幫助 – nyyrikki