Programmēšana

JavaFX 2 animācija: ceļa pārejas

Viens no spilgtākajiem JavaFX 2 aspektiem ir tā animācijas atbalsts. Izpratne par pāreju izveidi un laika grafika animāciju JavaFX ietver gan pāreju, gan laika līniju izmantošanu JavaFX 2. Šajā emuāra ziņā es pielāgoju šajā apmācībā sniegto piemēru, lai īpaši parādītu ceļa pārejas.

2. piemērs ("Ceļa pāreja"), kas parādīts JavaFX sadaļā Pāreju un laika grafika animācijas izveide, parāda ceļa izveidošanu ar klasēm no pakotnes JavaFX 2 formas "javafx.scene.shape.Path, javafx.scene.shape.MoveTo" .scene.shape.CubicCurve. Pēc tam šajā piemērā tiek parādīts javafx.animation.PathTransition instantiation un tiek piemērots instantiated javafx.scene.shape.Rectangle, lai pārvietotos pa izveidoto ceļu.

Zemāk esošajā kodu sarakstā es esmu veicis dažas nelielas izmaiņas 2. piemērā Pāreju un laika grafika animācijas izveidošana JavaFX. Esmu īpaši mainījis kustīgo formu no taisnstūra uz apli, pievienojis ceļam divas "gala pogas" kā divus atsevišķus apļus un pievienojis iespēju mainīt ceļa necaurredzamību kopā ar animēto apļu kustībām. Nulles necaurredzamības izmantošanas jaukā blakusparādība ir tā, ka pats ceļš neparādās, un tā vietā izskatās, ka aplis pārvietojas brīvi. Es mēģināju sadalīt katru galveno gabalu savā privātajā metodē, lai būtu vieglāk saskatīt funkcionalitātes "gabalus".

JavaFxAnimations.java

iepakojums dustin.piemēri; importēt java.util.List; importēt javafx.animation.PathTransition; importēt javafx.animation.Timeline; importēt javafx.application.Application; importēt javafx.scene.Group; importēt javafx.scene.Scene; importēt javafx.scene.paint.Color; importēt javafx.scene.shape. *; importēt javafx.stage.Stage; importēt javafx.util.Duration; / ** * Vienkāršs piemērs, kas demonstrē JavaFX animācijas. * * Nedaudz pielāgots no 2. piemēra ("Path Transition"), kas sniegts * "Transitions and Timeline Animation Creating JavaFX" * (//docs.oracle.com/javafx/2.0/animations/jfxpub-animations.htm). * * @author Dustin * / publiskā klase JavaFxAnimations paplašina lietojumprogrammu {/ ** * Ģenerēt ceļu, pa kuru notiks animācija. * * @param pathOpacity Ceļa attēlojuma necaurredzamība. * @return ģenerētais ceļš. * / privātais ceļš generētCurvyPath (galīgais dubultā ceļšOpacity) {pēdējais ceļa ceļš = jauns ceļš (); path.getElements (). add (new 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); atgriešanās ceļš; } / ** * Ģenerēt ceļa pāreju. * * @param formas forma, lai pārvietotos pa ceļu. * @param path Ceļš, pa kuru jābrauc. * @return PathTransition. * / private PathTransition generētPathTransition (galīgā formas forma, pēdējais ceļa ceļš) {final PathTransition pathTransition = new PathTransition (); pathTransition.setDuration (Duration.seconds (8.0)); pathTransition.setDelay (ilgums.sekundes (2.0)); pathTransition.setPath (ceļš); pathTransition.setNode (forma); pathTransition.setOrientation (PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount (Timeline.INDEFINITE); pathTransition.setAutoReverse (true); atgriešanās ceļšPāreja; } / ** * Nosakiet ceļa necaurredzamību, pamatojoties uz komandrindas argumentu, ja tas tiek piegādāts * vai pēc noklusējuma nulle, ja nav norādīta skaitliskā vērtība. * * @return necaurredzamība, lai izmantotu ceļu. * / privāts dubultā noteiksPathOpacity () {final Parameters params = getParameters (); galīgie saraksta parametri = params.getRaw (); dubults ceļšApacitāte = 0,0; if (! parametri.isEmpty ()) {mēģiniet {pathOpacity = Double.valueOf (parametri.get (0)); } catch (NumberFormatException nfe) {pathOpacity = 0.0; }} return pathOpacity; } / ** * Lietojiet animāciju, kas ir šīs klases tēma. * * @param group Grupa, kurai tiek izmantota animācija. * / private void applyAnimācija (galīgā grupas grupa) {galīgais apļa aplis = jauns aplis (20, 20, 15); aplis.setFill (Krāsa.DARKRED); gala ceļa ceļš = generētCurvyPath (noteiktPathOpacity ()); group.getChildren (). pievienot (ceļš); group.getChildren (). pievienot (aplis); group.getChildren (). pievienot (jauns aplis (20, 20, 5)); group.getChildren (). pievienot (jauns aplis (380, 240, 5)); galīgā PathTransition pāreja = generētPathTransition (aplis, ceļš); pāreja.spēlēt (); } / ** * Palaidiet JavaFX lietojumprogrammu * * @param stage Primary stage. * @throws Izņēmums Izņēmums, kas izmests lietojumprogrammas laikā. * / @Orride public void start (final Stage stage) throws Exception {final Group rootGroup = new Group (); galīgā ainas aina = jauna aina (rootGroup, 600, 400, Color.GHOSTWHITE); stage.setScene (aina); stage.setTitle ("JavaFX 2 animācijas"); stage.show (); ApplyAnimation (rootGroup); } / ** * Galvenā JavaFX lietojumprogrammas palaišanas funkcija. * * @param argumenti Komandrindas argumenti; izvēles pirmais arguments ir parādāmā ceļa * necaurredzamība (0 faktiski padara ceļu * neredzamu). * / public static void main (pēdējie String [] argumenti) {Application.launch (argumenti); }} 

Nākamajās ekrānuzņēmumu sērijās šis vienkāršais JavaFX animācijas piemērs tiek parādīts darbībā. Tie ir uzskaitīti nepārredzamības dilstošā secībā (no 1,0 līdz 0,0).

Pielāgota PathTransition piemēra demonstrēšana (necaurredzamība 1.0)

Pielāgota PathTransition piemēra demonstrēšana (necaurredzamība 0.2)

Pielāgota PathTransition piemēra demonstrēšana (necaurredzamība 0,05)

Pielāgota PathTransition piemēra demonstrēšana (necaurredzamība 0.0)

Katrs no iepriekš minētajiem ekrāna momentuzņēmumiem tika uzņemts pēc lietojumprogrammas palaišanas ar norādīto komandrindas argumentu (1, 0,2, 0,05 un 0).

Šis pielāgotais piemērs ir parādījis CeļšPāreja lai atdzīvinātu mezgla kustību pa noteikto ceļu (iepriekš esmu izveidojis emuārus par ceļa izmantošanu un dažām tā alternatīvām). Izstrādātāji var ieviest savu Transition atvasinājumu, un tiek atbalstītas arī citas piegādātās pārejas (piemēram, FadeTransition, ParallelTransition un SequentialTransition).

Tas ir vienkāršs process, lai ātri sāktu JavaFX 2 animācijas lietošanu, izmantojot paredzētās pārejas klases.

Sākotnējā izlikšana pieejama vietnē //marxsoftware.blogspot.com/ (iedvesmojoties no faktiskajiem notikumiem)

Šo stāstu "JavaFX 2 Animation: Path Transitions" sākotnēji publicēja JavaWorld.

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