Étapes de mise en œuvre : 1. Définissez l'objet FlipView. Contient les propriétés suivantes :
Copiez le code comme suit :
//Vue de face
Nœud public frontNode ;
//vue inversée
Noeud public backNode ;
//S'il faut retourner
booléen inversé = faux ;
//inverser l'angle
Temps DoubleProperty = nouveau SimpleDoubleProperty(Math.PI / 2);
//Effet spécial de retournement avant
PerspectiveTransform frontEffect = new PerspectiveTransform();
//Effet spécial de retournement inversé
PerspectiveTransform backEffect = new PerspectiveTransform();
La méthode create renvoie le contenu à afficher :
Copiez le code comme suit :
privé vide créer() {
time.addListener(new ChangeListener() {
@Outrepasser
public void modifié (ObservableValue<? extends Number> arg0,
Numéro arg1, Numéro 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());
frontNode.setEffect(frontEffect);
backNode.setEffect(backEffect);
getChildren().addAll(backNode, frontNode);
}
Ce qu'il faut noter dans le code ci-dessus, c'est qu'à mesure que la valeur temporelle change, les valeurs de frontEffect et backEffect changeront également. 2. L'implémentation de l'effet spécial PerspectiveTransform utilise les méthodes Math.sin() et Math.cos() pour simuler la transformation d'angle 3D. La mise en œuvre spécifique est la suivante :
Copiez le code comme suit :
private void setPT (PerspectiveTransform pt, double t) {
double largeur = 200 ;
double hauteur = 200 ;
double rayon = largeur / 2 ;
double dossier = hauteur / 10 ;
pt.setUlx(rayon - Math.sin(t) * rayon);
pt.setUly(0 - Math.cos(t) * retour);
pt.setUrx(rayon + Math.sin(t) * rayon);
pt.setUry(0 + Math.cos(t) * retour);
pt.setLrx(rayon + Math.sin(t) * rayon);
pt.setLry(hauteur - Math.cos(t) * retour);
pt.setLlx(rayon - Math.sin(t) * rayon);
pt.setLly(hauteur + Math.cos(t) * retour);
}
3. La transformation d'angle passe de 3,14/2 à -3,14/2 en 1 seconde.
Copiez le code comme suit :
KeyFrame frame1 = new KeyFrame(Duration.ZERO, new KeyValue(time,
Math.PI/2, Interpolateur.LINEAR));
KeyFrame frame2 = new KeyFrame(Duration.seconds(1),
nouveau gestionnaire d'événements() {
@Outrepasser
handle public void (événement ActionEvent) {
retourné = !renversé;
}
}, new KeyValue(time, -Math.PI / 2, Interpolator.LINEAR));
4. Création d'objets FlipView : les objets FlipView peuvent être facilement créés via le constructeur.
Copiez le code comme suit :
ImageView image1 = nouveau ImageView(nouvelle Image(getClass()
.getResourceAsStream("lion1.png")));
ImageView image2 = nouveau ImageView(nouvelle Image(getClass()
.getResourceAsStream("lion2.png")));
FlipView flip = nouveau FlipView(image1, image2);
5. Rendu :