初めてJavaFXを使用するので、setLayout()
/getLayout()
メソッドの質問があります。私はバウンスボールプロジェクトを構築しています。最初にCircle
オブジェクトを使用してボールを作成しましたが、より多くのパラメータを渡す必要があったので、独自のボールクラス(double x, double y, double dx, double dy, double size
)を作成することにしました。これは私が私がCircle
を使用したときに前に持っていたコードです:カスタムオブジェクトのJavaFXレイアウト
ball.setLayoutX(ball.getLayoutX() + dx);
ball.setLayoutY(ball.getLayoutY() + dy);
final Bounds bounds = canvas.getBoundsInLocal();
boolean right = ball.getLayoutX() >= (bounds.getMaxX() - ball.getRadius());
boolean left = ball.getLayoutX() <= (bounds.getMinX() + ball.getRadius());
boolean bottom = ball.getLayoutY() >= (bounds.getMaxY() - ball.getRadius());
boolean top = ball.getLayoutY() <= (bounds.getMinY() + ball.getRadius());
if (right || left) {
dx *= -1;
}
if (bottom || top) {
dy *= -1;
}
これはKeyFrame
とEventHandler
とTimeline
に入れたときに壁に跳ね返るCircle
「ボール」を得ました。今私は方法getLayout()
、setLayout()
とgetRadius()
が私自身のオブジェクトを使用して解決することができないので、Ball
ボールでこれを動作させる方法を見つけようとしています。どうすればこの問題を回避できますか/自分のsetLayout()
などを構築しますか?
私はこのアプローチを試みましたが、「キャンバス」をクリックするとボールが生成されることを忘れてしまい、クリックと同じくらい多くのボールがあります。ですから、 'List'は 'MouseEventHandler'で作成したボールを追跡しています。私は 'GraphicsContext2D'を使ってキャンバスにボールを描画しています。 'List 'に変更して 'Node getView'を追加しようとすると、NullPointerExceptionが発生します。 –
dot