実装手順: 1. FlipView オブジェクトを定義します。次のプロパティが含まれます。
次のようにコードをコピーします。
//正面図
パブリックノードfrontNode;
// 逆視点
パブリックノードバックノード;
//反転するかどうか
ブール反転 = false;
//角度を反転
DoubleProperty 時間 = 新しい SimpleDoubleProperty(Math.PI / 2);
//フロントフリップ特殊効果
PerspectiveTransformfrontEffect = new PerspectiveTransform();
//リバースフリップ特殊効果
PerspectiveTransform backEffect = new PerspectiveTransform();
create メソッドは、表示されるコンテンツを返します。
次のようにコードをコピーします。
private void create() {
time.addListener(new ChangeListener() {
@オーバーライド
public voidChanged(ObservableValue<? extends Number> arg0,
数値 arg1、数値 arg2) {
setPT(frontEffect, time.get());
setPT(backEffect, time.get());
}
});
anim.getKeyFrames().addAll(frame1, Frame2);
backNode.visibleProperty().bind(
Bindings.when(time.lessThan(0)).then(true).otherwise(false));
frontNode.visibleProperty().bind(
Bindings.when(time.lessThan(0)).then(false).otherwise(true));
setPT(frontEffect, time.get());
setPT(backEffect, time.get());
フロントノード.setEffect(フロントエフェクト);
backNode.setEffect(backEffect);
getChildren().addAll(backNode,frontNode);
}
上記のコードで注意する必要があるのは、時間の値が変化すると、frontEffect と backEffect の値も変化することです。 2. PerspectiveTransform 特殊効果の実装では、Math.sin() メソッドと Math.cos() メソッドを使用して 3D 角度変換をシミュレートします。 具体的な実装は以下の通りです。
次のようにコードをコピーします。
private void setPT(PerspectiveTransform pt, double t) {
二重幅 = 200;
倍の高さ = 200;
倍の半径 = 幅 / 2;
ダブルバック = 高さ / 10;
pt.setUlx(半径 - Math.sin(t) * 半径);
pt.setUly(0 - Math.cos(t) * 戻る);
pt.setUrx(半径 + Math.sin(t) * 半径);
pt.setUry(0 + Math.cos(t) * バック);
pt.setLrx(半径 + Math.sin(t) * 半径);
pt.setLry(身長 - Math.cos(t) * バック);
pt.setLlx(半径 - Math.sin(t) * 半径);
pt.setLly(身長 + Math.cos(t) * バック);
}
3. 角度変換は 1 秒で 3.14/2 から -3.14/2 に変化します。
次のようにコードをコピーします。
KeyFrame Frame1 = new KeyFrame(Duration.ZERO, new KeyValue(time,
Math.PI / 2、Interpolator.LINEAR));
KeyFrame フレーム 2 = 新しい KeyFrame(Duration.秒(1),
新しい EventHandler() {
@オーバーライド
public void handle(ActionEvent イベント) {
反転 = !反転;
}
}, new KeyValue(time, -Math.PI / 2, Interpolator.LINEAR));
4. FlipView オブジェクトの作成: FlipView オブジェクトはコンストラクターを通じて簡単に作成できます。
次のようにコードをコピーします。
ImageView image1 = new ImageView(new Image(getClass()
.getResourceAsStream("lion1.png")));
ImageView image2 = new ImageView(new Image(getClass()
.getResourceAsStream("lion2.png")));
FlipView フリップ = 新しい FlipView(image1, image2);
5. レンダリング: