Pasos de implementación: 1. Defina el objeto FlipView. Contiene las siguientes propiedades:
Copie el código de código de la siguiente manera:
//Vista frontal
Nodo público frontNode;
//vista inversa
Nodo público backNode;
//Si voltear
booleano invertido = falso;
//ángulo de giro
Tiempo de DoubleProperty = new SimpleDoubleProperty(Math.PI / 2);
//Efecto especial de volteo frontal
PerspectiveTransform frontEffect = nueva PerspectiveTransform();
//Efecto especial de giro inverso
PerspectiveTransform backEffect = nueva PerspectiveTransform();
El método de creación devuelve el contenido que se mostrará:
Copie el código de código de la siguiente manera:
crear vacío privado() {
time.addListener(nuevo ChangeListener() {
@Anular
El vacío público cambió (ObservableValue<? extiende Número> arg0,
Número arg1, Número arg2) {
setPT(frontEffect, tiempo.get());
setPT(backEffect, tiempo.get());
}
});
anim.getKeyFrames().addAll(marco1, marco2);
backNode.visibleProperty().bind(
Enlaces.cuando(tiempo.menosThan(0)).luego(verdadero).de lo contrario(falso));
frontNode.visibleProperty().bind(
Enlaces.cuando(tiempo.menosThan(0)).luego(falso).de lo contrario(verdadero));
setPT(frontEffect, tiempo.get());
setPT(backEffect, tiempo.get());
frontNode.setEffect(frontEffect);
backNode.setEffect(backEffect);
getChildren().addAll(backNode, frontNode);
}
Lo que debe tenerse en cuenta en el código anterior es que a medida que cambia el valor de tiempo, los valores de frontEffect y backEffect también cambiarán. 2. La implementación del efecto especial PerspectiveTransform utiliza los métodos Math.sin() y Math.cos() para simular la transformación de ángulos 3D. La implementación específica es la siguiente:
Copie el código de código de la siguiente manera:
setPT vacío privado (PerspectiveTransform pt, doble t) {
doble ancho = 200;
doble altura = 200;
radio doble = ancho / 2;
doble espalda = altura / 10;
pt.setUlx(radio - Math.sin(t) * radio);
pt.setUly(0 - Math.cos(t) * atrás);
pt.setUrx(radio + Math.sin(t) * radio);
pt.setUry(0 + Math.cos(t) * atrás);
pt.setLrx(radio + Math.sin(t) * radio);
pt.setLry(altura - Math.cos(t) * atrás);
pt.setLlx(radio - Math.sin(t) * radio);
pt.setLly(altura + Math.cos(t) * espalda);
}
3. La transformación del ángulo cambia de 3,14/2 a -3,14/2 en 1 segundo.
Copie el código de código de la siguiente manera:
Fotograma clave marco1 = nuevo fotograma clave (Duración.CERO, nuevo valor clave (tiempo,
Math.PI / 2, Interpolador.LINEAR));
Fotograma clave2 = nuevo fotograma clave(Duración.segundos(1),
nuevo manejador de eventos() {
@Anular
identificador de vacío público (evento ActionEvent) {
volteado = !volteado;
}
}, nuevo KeyValue(tiempo, -Math.PI / 2, Interpolator.LINEAR));
4. Creación de objetos FlipView: los objetos FlipView se pueden crear fácilmente a través del constructor.
Copie el código de código de la siguiente manera:
ImagenView imagen1 = nueva ImageView(nueva Imagen(getClass()
.getResourceAsStream("lion1.png")));
ImagenView imagen2 = nueva ImageView(nueva Imagen(getClass()
.getResourceAsStream("lion2.png")));
FlipView flip = nuevo FlipView(imagen1, imagen2);
5. Representación: