Programiranje

JavaFX 2 Animacija: prehodi poti

Eden najbolj bleščečih vidikov JavaFX 2 je podpora za animacijo. Uvidno ustvarjanje prehodov in časovne animacije v JavaFX zajema uporabo prehodov in časovnih črt v JavaFX 2. V tej objavi v blogu prilagodim primer, naveden v tej vadnici, da posebej predstavim prehode poti.

Primer 2 ("Prehod poti"), prikazan v Ustvarjanje prehodov in animacije časovne premice v JavaFX, prikazuje ustvarjanje poti z razredi iz paketa "oblik" JavaFX 2: javafx.scene.shape.Path, javafx.scene.shape.MoveTo in javafx .scene.shape.CubicCurve. Ta primer nato prikaže instanciranje javafx.animation.PathTransition in uporabo instanciranega javafx.scene.shape.Rectangle za premikanje po ustvarjeni poti.

V spodnjem seznamu kod sem nekaj primerov nekoliko spremenil v Ustvarjanje prehodov in animacije časovne osi v JavaFX. Posebej sem spremenil premikajočo se obliko iz pravokotnika v Krog, na pot dodal dva "končna gumba" kot dva ločena kroga in dodal možnost spreminjanja motnosti poti skupaj z animiranimi gibi kroga. Lep stranski učinek uporabe ničelne motnosti je, da se pot sama ne prikaže in je videti, kot da se krog prosto giblje. Vsak večji del tega sem poskušal razbiti na svojo zasebno metodo, da sem lažje videl "koščke" funkcionalnosti.

JavaFxAnimations.java

paket prah v.primeri; uvoz java.util.List; uvoz javafx.animation.PathTransition; uvoz javafx.animation.Timeline; uvoz javafx.application.Application; uvoz javafx.scene.Group; uvoz javafx.scene.Scene; uvoz javafx.scene.paint.Color; uvoz javafx.scene.shape. *; uvoz javafx.stage.Stage; uvoz javafx.util.Duration; / ** * Preprost primer, ki prikazuje animacije JavaFX. * * Rahlo prilagojeno iz primera 2 ("Prehod poti"), ki je na voljo v * "Ustvarjanje prehodov in časovne animacije v JavaFX" * (//docs.oracle.com/javafx/2.0/animations/jfxpub-animations.htm). * * @author Dustin * / javni razred JavaFxAnimations razširja aplikacijo {/ ** * Ustvari pot, po kateri bo prišlo do animacije. * * @param pathOpacity Neprosojnost predstavitve poti. * @return Ustvarjena pot. * / private Path createCurvyPath (final double pathOpacity) {final Path path = new Path (); path.getElements (). add (novo MoveTo (20,20)); path.getElements (). add (novo CubicCurveTo (380, 0, 380, 120, 200, 120)); path.getElements (). add (novo CubicCurveTo (0, 120, 0, 240, 380, 240)); path.setOpacity (pathOpacity); povratna pot; } / ** * Ustvari prehod poti. * * @param shape Oblika za potovanje po poti. * @param path Pot po kateri se peljemo. * @return PathTransition. * / private PathTransition generatedPathTransition (končna oblika oblike, končna pot poti) {final PathTransition pathTransition = new PathTransition (); pathTransition.setDuration (Duration.seconds (8.0)); pathTransition.setDelay (Duration.seconds (2.0)); pathTransition.setPath (pot); pathTransition.setNode (oblika); pathTransition.setOrientation (PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount (Timeline.INDEFINITE); pathTransition.setAutoReverse (true); return pathTransition; } / ** * Določite nepreglednost poti na podlagi argumenta ukazne vrstice, če je na voljo * ali nič, če ni podana številska vrednost. * * @ vrni Neprosojnost za uporabo za pot. * / zasebno dvojno definePathOpacity () {končni Parametri params = getParameters (); končni parametri seznama = params.getRaw (); double pathOpacity = 0,0; if (! parameters.isEmpty ()) {try {pathOpacity = Double.valueOf (parameters.get (0)); } catch (NumberFormatException nfe) {pathOpacity = 0.0; }} vrnitev pathOpacity; } / ** * Uporabi animacijo, ki je predmet tega predavanja. * * @param group Skupina, za katero je uporabljena animacija. * / private void applyAnimation (končna skupina skupine) {končni krog kroga = nov krog (20, 20, 15); circle.setFill (Color.DARKRED); končna pot poti = generiraj CurvyPath (določiPathOpacity ()); group.getChildren (). add (pot); group.getChildren (). add (krog); group.getChildren (). add (nov krog (20, 20, 5)); group.getChildren (). add (nov krog (380, 240, 5)); končni prehod PathTransition = generirajPathTransition (krog, pot); prehod.play (); } / ** * Zaženite aplikacijo JavaFX * * @param stage Primarna stopnja. * @throws Exception Izjema, vržena med prijavo. * / @Override public void start (final Stage stage) vrže izjemo {final Group rootGroup = new Group (); končna scena scene = nova scena (rootGroup, 600, 400, Color.GHOSTWHITE); stage.setScene (prizor); stage.setTitle ("Animacije JavaFX 2"); stage.show (); applyAnimation (rootGroup); } / ** * Glavna funkcija za zagon aplikacije JavaFX. * * @param argumenti Argumenti ukazne vrstice; neobvezen prvi argument je * nepreglednost prikazane poti (0 dejansko naredi pot * nevidno). * / javni statični void glavni (končni argumenti String []) {Application.launch (argumenti); }} 

Naslednja serija posnetkov zaslona prikazuje ta preprost primer animacije JavaFX v akciji. Navedeni so po vrstnem redu padajoče motnosti (od 1,0 do 0,0).

Prikaz primera prilagojenega prehoda poti (Opacity 1.0)

Prikaz primera prilagojenega prehoda poti (Opacity 0,2)

Prikaz primera prilagojenega prehoda poti (neprosojnost 0,05)

Prikaz primera prilagojenega prehoda poti (Opacity 0,0)

Vsak od zgornjih posnetkov zaslona je bil posnet po zagonu aplikacije z navedenim argumentom ukazne vrstice (1, 0,2, 0,05 in 0).

Ta prilagojeni primer je pokazal uporabo Prehod poti za animiranje gibanja vozlišča po predpisani poti (že sem pisal blog o uporabi poti in nekaterih drugih možnostih). Razvijalci lahko implementirajo lastno izvedenko prehoda, podprti pa so tudi drugi dobavljeni prehodi (na primer FadeTransition, ParallelTransition in SequentialTransition).

Postopek je hiter začetek uporabe animacije JavaFX 2 z uporabo predavalnih razredov.

Izvirna objava je na voljo na //marxsoftware.blogspot.com/ (navdih dejanski dogodki)

To zgodbo, "JavaFX 2 Animation: Path Transitions", je prvotno objavil JavaWorld.

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