オブジェクトを移動する必要があります。私の場合は、特定のパス上の文字列です。実際には、パスは半円になる可能性があります。添付の図に示すように、文字列は別のオブジェクトの背後に表示され、パスに沿って移動し、2 番目のオブジェクト (両方の画像) の背後に消えます。始め方がわかりません...誰かが私を助けてくれることを願っています。前もって感謝します。
質問する
2415 次
1 に答える
3
Thread
テキスト移動のロジックを処理する新しいを作成します。そのrun()
メソッドでは、反復ごとにテキストの位置を変更するループを追加します。また、テキストの位置を変更した後、または上書きrepaint()
したコンポーネントを定義するコンポーネントを呼び出す必要があります。paint()
paintComponent()
各反復の後、スレッドは短時間スリープする必要があります。50ミリ秒間スリープすると、1秒あたり約20フレームが取得されます。
さて、数学です。ある点が円の中心(2つの画像の中間点より下のどこか)であり、テキストの開始点であることがわかっているとします。これにより、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
(計算してインクリメントしたばかりです)。必要なのはpyの値だけです。これは次のとおりです。
p.y = c.y - Math.sqrt(d * d - ((c.x - p.x) * (c.x - p.x))
于 2012-08-28T08:26:44.020 に答える