Programovanie

Animácia JavaFX 2: Prechody ciest

Jedným z najjasnejších aspektov JavaFX 2 je jeho podpora animácií. Nápadité vytváranie animácií Prechody a Časová os v prostredí JavaFX pokrýva použitie Prechodov a Časových osí v prostredí JavaFX 2. V tomto príspevku na blogu prispôsobujem príklad uvedený v tomto návode, aby som konkrétne demonštroval Prechody ciest.

Príklad 2 („Prechod cesty“) uvedený v časti Vytváranie prechodov a animácie časovej osi v prostredí JavaFX demonštruje vytvorenie cesty s triedami z balíka „tvarov“ JavaFX 2: javafx.scene.shape.Path, javafx.scene.shape.MoveTo a javafx .scene.shape.CubicCurve. Tento príklad potom demonštruje vytvorenie inštancie javafx.animation.PathTransition a použitie inštanciovaného javafx.scene.shape.Rectangle na pohyb po vytvorenej ceste.

V zozname kódov nižšie som urobil malé zmeny v príklade 2 v časti Vytváranie prechodov a animácie časovej osi v JavaFX. Konkrétne som zmenil pohybujúci sa tvar z obdĺžnika na kruh, pridal som k ceste dva „koncové gombíky“ ako dva samostatné kruhy a pridal som schopnosť meniť nepriehľadnosť cesty spolu s animovanými pohybmi kruhu. Príjemným vedľajším účinkom použitia nulovej nepriehľadnosti je, že sa samotná cesta nezobrazí a vyzerá to, že sa kruh pohybuje voľne. Snažil som sa rozdeliť každý hlavný kúsok tohto článku do svojej vlastnej súkromnej metódy, aby bolo ľahšie vidieť „kúsky“ funkčnosti.

JavaFxAnimations.java

balenie zásypu.príklady; import java.util.List; import javafx.animation.PathTransition; import javafx.animation.Timeline; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; importovať javafx.scene.shape. *; import javafx.stage.Stage; import javafx.util.Duration; / ** * Jednoduchý príklad demonštrácie animácií JavaFX. * * Mierne upravené z príkladu 2 („Path Transition“), ktorý je uvedený v dokumente * „Creating Transitions and Timeline Animation in JavaFX“ * (//docs.oracle.com/javafx/2.0/animations/jfxpub-animations.htm). * * @author Dustin * / verejná trieda JavaFxAnimations rozširuje aplikáciu {/ ** * Generovať cestu, na ktorej bude prebiehať animácia. * * @param pathOpacity Nepriehľadnosť reprezentácie cesty. * @return Generovaná cesta. * / private Path generateCurvyPath (final double pathOpacity) {final Path path = new Path (); path.getElements (). add (nové MoveTo (20,20)); path.getElements (). add (new CubicCurveTo (380, 0, 380, 120, 200, 120)); path.getElements (). add (new CubicCurveTo (0, 120, 0, 240, 380, 240)); path.setOpacity (pathOpacity); spiatočná cesta; } / ** * Generovať prechod cesty. * * @param tvar Tvar na cestu po ceste. * @param cesta Cesta, po ktorej treba prejsť. * @return PathTransition. * / private PathTransition generatePathTransition (konečný tvarový tvar, konečná cesta cesty) {final PathTransition pathTransition = nová cesta PathTransition (); pathTransition.setDuration (Duration.seconds (8.0)); pathTransition.setDelay (Duration.seconds (2.0)); pathTransition.setPath (cesta); pathTransition.setNode (shape); pathTransition.setOrientation (PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount (Timeline.INDEFINITE); pathTransition.setAutoReverse (true); spiatočná cestaPrechod; } / ** * Určte nepriehľadnosť cesty na základe argumentu príkazového riadku, ak je zadaný * alebo predvolene nula, ak nie je poskytnutá číselná hodnota. * * @return Nepriehľadnosť použitá pre cestu. * / private double determinePathOpacity () {final Parameters params = getParameters (); konečné parametre zoznamu = params.getRaw (); dvojitá cestaOpacita = 0,0; if (! parameters.isEmpty ()) {try {pathOpacity = Double.valueOf (parameters.get (0)); } catch (NumberFormatException nfe) {pathOpacity = 0,0; }} return pathOpacity; } / ** * Použiť animáciu, predmet tejto triedy. * * @param group Skupina, na ktorú sa použije animácia. * / private void applyAnimation (konečná skupina skupín) {final Circle circle = nový kruh (20, 20, 15); circle.setFill (Color.DARKRED); final Path path = generateCurvyPath (determinePathOpacity ()); group.getChildren (). add (cesta); group.getChildren (). add (kruh); group.getChildren (). add (nový kruh (20, 20, 5)); group.getChildren (). add (nový kruh (380, 240, 5)); konečný prechod PathTransition = generatePathTransition (kruh, cesta); transition.play (); } / ** * Spustiť aplikáciu JavaFX * * @param stage Primárna fáza. * @throws Exception Výnimka vyvolaná počas aplikácie. * / @Override public void start (záverečná fáza) vyvolá výnimku {final Group rootGroup = new Group (); záverečná scéna scény = nová scéna (rootGroup, 600, 400, Color.GHOSTWHITE); stage.setScene (scéna); stage.setTitle ("Animácie JavaFX 2"); stage.show (); applyAnimation (rootGroup); } / ** * Hlavná funkcia pre spustenie aplikácie JavaFX. * * @param arguments Argumenty príkazového riadku; voliteľným prvým argumentom je * nepriehľadnosť cesty, ktorá sa má zobraziť (0 efektívne spôsobí, že cesta * bude neviditeľná). * / public static void main (final argumenty String []) {Application.launch (argumenty); }} 

Nasledujúca séria snímok obrazovky zobrazuje tento jednoduchý príklad animácie JavaFX v akcii. Sú uvedené v poradí klesajúcej nepriehľadnosti (od 1,0 do 0,0).

Ukážka prispôsobeného príkladu prechodu cesty (nepriehľadnosť 1,0)

Ukážka prispôsobeného príkladu prechodu cesty (nepriehľadnosť 0,2)

Ukážka prispôsobeného príkladu prechodu cesty (nepriehľadnosť 0,05)

Ukážka prispôsobeného príkladu prechodu cesty (nepriehľadnosť 0,0)

Každá z vyššie uvedených snímok obrazovky bola vytvorená po spustení aplikácie so zadaným argumentom príkazového riadku (1, 0,2, 0,05 a 0).

Tento upravený príklad demonštroval použitie PathTransition na animáciu pohybu uzla po predpísanej ceste (o použití Cesty a niektorých jej alternatívach som sa už blogoval). Vývojári môžu implementovať svoju vlastnú deriváciu Transition a sú podporované aj ďalšie dodávané prechody (napríklad FadeTransition, ParallelTransition a SequentialTransition).

Je to priamy proces, ako rýchlo začať používať animáciu JavaFX 2 pomocou poskytnutých tried Prechodu.

Pôvodný príspevok je k dispozícii na //marxsoftware.blogspot.com/ (inšpirovaný skutočnými udalosťami)

Tento príbeh, „JavaFX 2 Animation: Path Transitions“, bol pôvodne publikovaný spoločnosťou JavaWorld.

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