Ohjelmointi

JavaFX 2 -animaatio: Polun siirtymät

Yksi JavaFX 2: n vilkkaimmista ominaisuuksista on sen animaatiotuki. JavaFX: n oivaltava siirtymien luominen ja aikajanan animaatio kattaa sekä siirtymien että aikajanojen käytön JavaFX 2: ssa. Tässä blogikirjoituksessa mukautan tässä opetusohjelmassa annettuun esimerkkiin erityisesti polunsiirtymien esittelemiseksi.

Esimerkki 2 ("Polunsiirtymä"), joka on esitetty kohdassa Siirtymien ja aikajanan animaation luominen JavaFX: ssä, osoittaa polun luomisen luokille JavaFX 2 "muodot" -paketista: javafx.scene.shape.Path, javafx.scene.shape.MoveTo ja javafx .scene.shape.CubicCurve. Tämä esimerkki osoittaa sitten javafx.animation.PathTransitionin instantioinnin ja instantioidun javafx.scene.shape.Rectangle-sovelluksen soveltamisen liikkumaan luotua polkua pitkin.

Alla olevassa koodiluettelossani olen tehnyt joitain pieniä muutoksia esimerkkiin 2 siirtymien ja aikajanan animaation luomisessa JavaFX: ssä. Olen nimenomaan muuttanut liikkuvan muodon suorakulmiosta ympyräksi, lisännyt polulle kaksi "päätönuppia" kahtena erillisenä ympyränä ja lisännyt kyvyn muuttaa polun opasiteettia yhdessä animoitujen ympyrän liikkeiden kanssa. Nollan peittämättömyyden käytön mukava sivuvaikutus on, että polkua ei tule näkyviin ja näyttää siltä, ​​että ympyrä liikkuu vapaasti. Yritin hajottaa tämän jokaisen tärkeän osan omaksi yksityiseksi menetelmällään, jotta toiminnallisuuden "palojen" ymmärtäminen olisi helpompaa.

JavaFxAnimations.java

pakkaus pölyä.esimerkkejä; tuo java.util.List; tuo javafx.animation.PathTransition; tuo javafx.animation.Timeline; tuo javafx.application.Application; tuo javafx.scene.Group; tuo javafx.scene.Scene; tuo javafx.scene.paint.Color; tuo javafx.scene.shape. *; tuo javafx.stage.Stage; tuo javafx.util.Duration; / ** * Yksinkertainen esimerkki JavaFX-animaatioista. * * Hieman mukautettu esimerkistä 2 ("Polunsiirtymä"), joka on annettu kohdassa "Siirtymien ja aikajanan animaation luominen JavaFX: ssä" * (//docs.oracle.com/javafx/2.0/animations/jfxpub-animations.htm). * * @author Dustin * / julkisen luokan JavaFxAnimations laajentaa sovellusta {/ ** * Luo polku, jolla animaatio tapahtuu. * * @param pathOpacity Polun esityksen peittävyys. * @return Luotu polku. * / yksityinen polku generoiCurvyPath (viimeinen kaksinkertainen polkuOpasiteetti) {viimeinen polun polku = uusi polku (); path.getElements (). add (uusi MoveTo (20,20)); path.getElements (). add (uusi CubicCurveTo (380, 0, 380, 120, 200, 120)); path.getElements (). add (uusi CubicCurveTo (0, 120, 0, 240, 380, 240)); path.setOpacity (polkuOpacity); paluu matka; } / ** * Luo polunsiirtymä. * * @param shape Shape matkustaa polkua pitkin. * @param polku Polku, jota ajetaan. * @return PathTransition. * / private PathTransition generoiPathTransition (viimeinen muodon muoto, viimeinen polun polku) {final PathTransition pathTransition = uusi PathTransition (); pathTransition.setDuration (Kesto.sekuntia (8.0)); pathTransition.setDelay (Kesto.sekuntia (2.0)); polkuTransition.setPath (polku); pathTransition.setNode (muoto); pathTransition.setOrientation (PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount (Aikajana.INDEFINITE); pathTransition.setAutoReverse (true); paluureittiTransition; } / ** * Määritä polun peittävyys komentoriviargumentin perusteella, jos se toimitetaan * tai oletusarvoisesti nolla, jos numeerista arvoa ei anneta. * * @return Polun läpinäkyvyys. * / yksityinen kaksinkertainen määritysPathOpacity () {final Parameters params = getParameters (); lopulliset luetteloparametrit = params.getRaw (); kaksoispolku Opasiteetti = 0,0; if (! parameters.isEmpty ()) {kokeile {pathOpacity = Double.valueOf (parametrit.get (0)); } saalis (NumberFormatException nfe) {pathOpacity = 0.0; }} return pathOpacity; } / ** * Käytä tämän luokan aiheen animaatiota. * * @param group Ryhmä, johon animaatiota käytetään. * / private void applyAnimaatio (viimeinen ryhmäryhmä) {viimeinen ympyräympyrä = uusi ympyrä (20, 20, 15); ympyrä.setFill (Väri.TUMEA); viimeinen polku = generoiCurvyPath (määritäPathOpacity ()); group.getChildren (). add (polku); group.getChildren (). add (ympyrä); group.getChildren (). add (uusi ympyrä (20, 20, 5)); group.getChildren (). add (uusi ympyrä (380, 240, 5)); lopullinen PathTransition-siirtymä = generoiPathTransition (ympyrä, polku); siirtyminen.play (); } / ** * Käynnistä JavaFX-sovellus * * @param-vaihe Ensisijainen vaihe. * @throws Poikkeus Poikkeus heitetään sovelluksen aikana. * / @Override public void start (viimeinen vaihe) heittää poikkeuksen {final Group rootGroup = new Group (); viimeinen kohtauskohtaus = uusi kohtaus (rootGroup, 600, 400, väri.GHOSTWHITE); stage.setScene (kohtaus); stage.setTitle ("JavaFX 2 -animaatiot"); stage.show (); ApplyAnimation (rootGroup); } / ** * Päätoiminto JavaFX-sovelluksen ajamiseksi. * * @param argumentit Komentoriviargumentit; valinnainen ensimmäinen argumentti on näytettävän polun * peittävyys (0 tekee polun * käytännössä näkymättömäksi). * / public static void main (viimeiset merkkijono [] argumentit) {Application.launch (argumentit); }} 

Seuraava kuvakaappaussarja näyttää tämän yksinkertaisen JavaFX-animaation esimerkin toiminnassa. Ne on lueteltu laskeutumattomuuden mukaan (1,0: sta 0,0: een).

Mukautetun PathTransition-esimerkin esittely (Opasiteetti 1.0)

Mukautetun PathTransition-esimerkin esittely (opasiteetti 0,2)

Mukautetun PathTransition-esimerkin esittely (opasiteetti 0,05)

Mukautetun PathTransition-esimerkin esittely (opasiteetti 0,0)

Jokainen yllä olevista kuvakaappauksista otettiin sovelluksen suorittamisen jälkeen määritetyllä komentoriviargumentilla (1, 0,2, 0,05 ja 0).

Tämä mukautettu esimerkki on osoittanut käytön PolkuTransition animoida solmun liike määrättyä polkua pitkin (olen kirjoittanut blogia Pathin käytöstä ja joistakin sen vaihtoehdoista aiemmin). Kehittäjät voivat toteuttaa oman Transition-johdannaisensa, ja myös muita toimitettuja siirtymiä tuetaan (kuten FadeTransition, ParallelTransition ja SequentialTransition).

Se on yksinkertainen prosessi aloittaa JavaFX 2 -animaation käyttö nopeasti siirtymäluokkien avulla.

Alkuperäinen julkaisu on saatavana osoitteessa //marxsoftware.blogspot.com/ (Innoittamana Todelliset tapahtumat)

Tämän tarinan "JavaFX 2 -animaatio: Polun siirtymät" julkaisi alun perin JavaWorld.