Προγραμματισμός

JavaFX 2 Animation: Μεταβάσεις διαδρομής

Μία από τις πιο φωτεινές πτυχές του JavaFX 2 είναι η υποστήριξη κινούμενων σχεδίων. Η διορατική Δημιουργία Μεταβάσεων και Κινούμενα Σχέδια Χρονολογίου στο JavaFX καλύπτει τη χρήση τόσο των Μεταβάσεων όσο και των Χρονολογιών στο JavaFX 2. Σε αυτήν την ανάρτηση ιστολογίου, προσαρμόζω ένα παράδειγμα που παρέχεται σε αυτό το σεμινάριο για να δείξω συγκεκριμένα τις Μεταβάσεις διαδρομής.

Το Παράδειγμα 2 ("Μετάβαση διαδρομής") που εμφανίζεται στη Δημιουργία μεταβάσεων και στο Animation Timeline στο JavaFX δείχνει τη δημιουργία διαδρομής με κλάσεις από το πακέτο "σχήματα" του JavaFX 2: javafx.scene.shape.Path, javafx.scene.shape.MoveTo και javafx .scene.shape.CubicCurve. Αυτό το παράδειγμα στη συνέχεια δείχνει την εμφάνιση ενός javafx.animation.PathTransition και την εφαρμογή ενός instantiated javafx.scene.shape. ορθογώνιο για μετακίνηση κατά μήκος της δημιουργημένης διαδρομής.

Στην λίστα κωδικών μου παρακάτω, έχω κάνει κάποιες μικρές αλλαγές στο Παράδειγμα 2 στη Δημιουργία μεταβάσεων και στο Animation Timeline στο JavaFX. Έχω αλλάξει συγκεκριμένα το κινούμενο σχήμα από ορθογώνιο σε κύκλο, πρόσθεσα δύο "ακροδέκτες" στη διαδρομή ως δύο ξεχωριστούς κύκλους και πρόσθεσα τη δυνατότητα αλλαγής της αδιαφάνειας της διαδρομής μαζί με τις κινούμενες κινήσεις κύκλου. Η ωραία παρενέργεια της χρήσης μηδενικής αδιαφάνειας είναι ότι η ίδια η διαδρομή δεν εμφανίζεται και μοιάζει σαν ο κύκλος να κινείται ελεύθερα. Προσπάθησα να σπάσω κάθε σημαντικό κομμάτι αυτού στη δική του ιδιωτική μέθοδο για να κάνω ευκολότερο να δω τα «κομμάτια» της λειτουργικότητας.

JavaFxAnimations.java

πακέτο dustin.example; εισαγωγή java.util.List; εισαγωγή javafx.animation.PathTransition; εισαγωγή javafx.animation.Timeline; εισαγωγή javafx.application.Application; εισαγωγή javafx.scene.Group; εισαγωγή javafx.scene.Scene; εισαγωγή javafx.scene.paint.Color; εισαγωγή javafx.scene.shape. *; εισαγωγή javafx.stage.Stage; εισαγωγή javafx.util.Duration; / ** * Απλό παράδειγμα που δείχνει κινούμενες εικόνες JavaFX. * * Ελαφρώς προσαρμοσμένο από το Παράδειγμα 2 ("Μετάβαση διαδρομής") που παρέχεται στο * "Δημιουργία μεταβάσεων και Κινούμενη εικόνα στο JavaFX" * (//docs.oracle.com/javafx/2.0/animations/jfxpub-animations.htm). * * @author Dustin * / JavaFxAnimations δημόσιας τάξης επεκτείνει την εφαρμογή {/ ** * Δημιουργία διαδρομής στην οποία θα εμφανιστεί η κίνηση. * * @param pathOpacity Η αδιαφάνεια της αναπαράστασης διαδρομής. * @return Δημιουργήθηκε διαδρομή. * / private Path createCurvyPath (final double pathOpacity) {final Path path = new Path (); path.getElements (). add (νέο MoveTo (20,20)); path.getElements (). προσθήκη (νέο CubicCurveTo (380, 0, 380, 120, 200, 120)); path.getElements (). προσθήκη (νέο CubicCurveTo (0, 120, 0, 240, 380, 240)); path.setOpacity (pathOpacity); μονοπάτι επιστροφής; } / ** * Δημιουργία μετάβασης διαδρομής. * * @param σχήμα Σχήμα για να ταξιδέψετε κατά μήκος της διαδρομής. * @param path Μονοπάτι για να ταξιδέψετε. * @return PathTransition. * / private PathTransition createPathTransition (τελικό σχήμα σχήματος, τελική διαδρομή διαδρομής) {final PathTransition pathTransition = νέο PathTransition (); pathTransition.setDuration (Duration.seconds (8.0)); pathTransition.setDelay (Duration.seconds (2.0)); pathTransition.setPath (διαδρομή); pathTransition.setNode (σχήμα); pathTransition.setOrientation (PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount (Timeline.INDEFINITE); pathTransition.setAutoReverse (αληθινό); διαδρομή επιστροφής Μετάβαση; } / ** * Προσδιορίστε την αδιαφάνεια της διαδρομής με βάση το όρισμα γραμμής εντολών εάν παρέχεται * ή μηδέν από προεπιλογή, εάν δεν παρέχεται αριθμητική τιμή. * * @return Opacity για χρήση για διαδρομή. * / private double determinPathOpacity () {final Parameters params = getParameters (); τελικές παράμετροι λίστας = params.getRaw (); διπλή διαδρομήOpacity = 0,0; if (! parameter.isEmpty ()) {δοκιμάστε {pathOpacity = Double.valueOf (parameter.get (0)); } catch (NumberFormatException nfe) {pathOpacity = 0,0; }} επιστροφή pathOpacity; } / ** * Εφαρμόστε κινούμενα σχέδια, το αντικείμενο αυτής της τάξης. * * @param group Ομάδα στην οποία εφαρμόζεται κινούμενη εικόνα. * / private void applyAnimation (τελική ομάδα ομάδας) {final Circle circle = new Circle (20, 20, 15); circle.setFill (Color.DARKRED); τελική διαδρομή Path = createCurvyPath (καθορισμόςPathOpacity ()); group.getChildren (). προσθήκη (διαδρομή); group.getChildren (). προσθήκη (κύκλος); group.getChildren (). προσθήκη (νέος κύκλος (20, 20, 5)); group.getChildren (). προσθήκη (νέος κύκλος (380, 240, 5)); τελικό PathTransition μετάβαση = createPathTransition (κύκλος, διαδρομή); transisi.play (); } / ** * Ξεκινήστε την εφαρμογή JavaFX * * @param stage Πρωτοβάθμιο στάδιο. * @throws Εξαίρεση Εξαίρεση που ρίχτηκε κατά την εφαρμογή * / @ Override public void start (τελικό στάδιο) ρίχνει την εξαίρεση {final Group rootGroup = new Group (); τελική σκηνή σκηνής = νέα σκηνή (rootGroup, 600, 400, Color.GHOSTWHITE); stage.setScene (σκηνή); stage.setTitle ("JavaFX 2 Animations"); stage.show (); applyAnimation (rootGroup); } / ** * Κύρια λειτουργία για την εκτέλεση της εφαρμογής JavaFX. * * Ορίσματα @param Ορίσματα γραμμής εντολών. Το προαιρετικό πρώτο όρισμα είναι η * αδιαφάνεια της διαδρομής που θα εμφανιστεί (0 καθιστά αποτελεσματικά τη διαδρομή * αόρατη). * / public static void main (final επιχειρήματα String []) {Application.launch (επιχειρήματα); }} 

Οι ακόλουθες σειρές στιγμιότυπων οθόνης δείχνουν αυτό το απλό παράδειγμα κίνησης JavaFX σε δράση. Παρατίθενται κατά σειρά φθίνουσας αδιαφάνειας (από 1,0 έως 0,0).

Παράδειγμα προσαρμοσμένου παραδείγματος μετάβασης διαδρομής (αδιαφάνεια 1.0)

Παράδειγμα προσαρμοσμένου παραδείγματος μετάβασης διαδρομής (αδιαφάνεια 0,2)

Παράδειγμα προσαρμοσμένου παραδείγματος μετάβασης διαδρομής (αδιαφάνεια 0,05)

Παράδειγμα προσαρμοσμένου παραδείγματος μετάβασης (αδιαφάνεια 0,0)

Κάθε ένα από τα παραπάνω στιγμιότυπα οθόνης λήφθηκε μετά την εκτέλεση της εφαρμογής με το καθορισμένο όρισμα γραμμής εντολών (1, 0.2, 0.05 και 0).

Αυτό το προσαρμοσμένο παράδειγμα έχει δείξει τη χρήση PathTransition για να κινούμε μια κίνηση ενός κόμβου κατά μήκος της καθορισμένης διαδρομής (έχω κάνει blog σχετικά με τη χρήση του Path και μερικές από τις εναλλακτικές λύσεις του στο παρελθόν). Οι προγραμματιστές μπορούν να εφαρμόσουν το δικό τους παράγωγο της Μετάβασης και υποστηρίζονται και άλλες παρεχόμενες μεταβάσεις (όπως FadeTransition, ParallelTransition και SequentialTransition).

Είναι μια απλή διαδικασία για να ξεκινήσετε γρήγορα την εφαρμογή animation JavaFX 2 χρησιμοποιώντας τις παρεχόμενες τάξεις Transition.

Η αρχική ανάρτηση διατίθεται στη διεύθυνση //marxsoftware.blogspot.com/ (Εμπνευσμένη από τις πραγματικές εκδηλώσεις)

Αυτή η ιστορία, "JavaFX 2 Animation: Path Transitions" δημοσιεύθηκε αρχικά από το JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found