1

こんにちは、現在進行中のプロジェクトを続行するために解決しなければならない問題を解決しようとしています。JPanel の角から、ユーザーが入力した角度によって決定されるパネルの境界線上の任意の点までの線をアニメーション化したいと考えています。

これに似た投稿の多くは、ラインのx2、y2をインクリメントするスイングタイマーを推奨していますが、私の問題は、関数によって決定されるため、描画されるラインがわからないことです。角度 (勾配) を考慮します。

たまたま 30 度だったとします...正しい角度の線をアニメーション化するためのピクセル単位の上昇と実行がわからないため、x2 と y2 をインクリメントすることはできません....

おそらく数学などでこれを支援するために利用できる関数はありますか....私はjavafx.animationも調べています

私は必ずしも正しい方向に向けられるための解決策を探しているわけではありません。ありがとうと思います

編集
別の投稿から:
こんにちは、ビリヤード台を横切るビリヤード ボールのパスを本質的に示すプロジェクトを実行しようとしています。基礎となる三角法は理解していますが、Java でのアニメーションの経験はありません。

現在、プール テーブルとして機能する JPanel があります。ボールは常に特定のポイントから始まります。

paint() を使用して線を「描く」方法は知っていますが、どうすれば簡単にアニメーション化できますか。

私の予感は、各パスで遅延を引き起こし、ループの各パスでラインの次のピクセルを描画するスイングタイマーを備えたループを使用して、ボールのパスをアニメーション化する (基本的に成長するラインをアニメーション化する) ことです。私の問題は、これらのピクセル値をどのように参照できるかです。たとえば、線が水平または垂直の場合、y2 または x2 の値をインクリメントしてパスごとに線を再描画できますが、線の傾きを変更できる場合、線の終点を取得する方法は理解していますが、それぞれについてはどうですかライン上のアクティブなピクセル座標。線オブジェクトを「描画」し、そのパス内の各ピクセルを何らかの方法で参照できますか? 私は PathIterator() を少し調べましたが、正しい軌道に乗っているとは確信していません (または、最も簡単で高レベルの軌道に乗っていないのではないかと心配しています)。

これを行う簡単な方法はありますか、それとも少なくとも正しい軌道に乗っていますか? 私は自分で研究していますが、学校でのソフトウェア エンジニアリング プロジェクトのためのものであり、アニメーションの側面が私たちのグループを本当に妨げているので、心配になっています.

4

2 に答える 2

3

三角法を理解したら、Mathクラスを調べます。メソッドには、上部の頂点に必要なピクセルの高さを計算するために必要な通常のsin、cos、tanメソッドが含まれます。ただし、これらのメソッドはラジアン単位の角度を使用するため、使用する場合は度からラジアンに変換する必要があることに注意してください。 Math.PIそのために役立ちます。

于 2012-04-15T07:26:15.077 に答える
1

私の予感は、各パスで遅延を引き起こし、ループの各パスでラインの次のピクセルを描画するスイングタイマーを備えたループを使用して、ボールのパスをアニメーション化する (基本的に成長するラインをアニメーション化する) ことです。

はい、その通りです。

私の問題は、これらのピクセル値をどのように参照できるかです。

ピクセル値については心配しません。代わりに、問題を構成要素に分けてください -

  • タイム スライスの長さを表す int 定数をクラスに与えます。これを試してみるのもよいでしょう。
  • 時間の各スライスのボールの位置を理解する、ボールの物理学のコードを用意する
  • 現在の位置にボールを描画する別のコードがあります。
  • タイマーは時間を更新し、物理コードを呼び出してボールの位置を更新します。物理部分は、この位置を記述するクラス フィールド (おそらく ballX および ballY 変数) をrepaint()設定し、JPanel のpaintComponent(...)メソッドが ballX および ballY 変数を使用して正しい位置にボールを描画できるように呼び出します。
  • プログラムのロジック部分とビュー部分に別々のクラスを使用するのが最善ですが、初期段階では必要ないかもしれません。
于 2012-04-17T03:40:23.613 に答える