KWALIFIKACJA PGF7 - TEST WIEDZY NR 8

PYTANIE NR 29.
Timeline timeline = new Timeline();
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), 
    new KeyValue(node.translateXProperty(), 200, Interpolator.EASE_BOTH)));
timeline.play();
Powiąż powyższy fragment kodu z jednym z poniższych efektów w animacji:
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Timeline uruchamia animację z jednym KeyFrame trwającym 500 ms. W KeyValue ustawiono docelową wartość translateX na 200, więc obiekt przesuwa się w osi X. Interpolator EASE_BOTH oznacza łagodne przyspieszenie na początku i łagodne wyhamowanie na końcu.

Pełne wyjaśnienie:

Fragment kodu tworzy animację w czasie, wykorzystując mechanizm klatek kluczowych. Obiekt Timeline zawiera listę KeyFrame, czyli punktów na osi czasu, w których zdefiniowane są wartości właściwości.

W kodzie dodano jedną klatkę kluczową:

  • Duration.millis(500) – czas dojścia do stanu końcowego wynosi 500 ms (pół sekundy). To jest czas, a nie odległość.
  • node.translateXProperty() – animowana jest właściwość przesunięcia w osi X, czyli ruch poziomy.
  • wartość 200 – jest to docelowa wartość translateX, więc końcowo obiekt znajdzie się 200 pikseli dalej w poziomie (względem położenia wynikającego z układu).
  • Interpolator.EASE_BOTH – tempo zmiany jest nieliniowe: na początku ruch startuje łagodnie (przyspiesza), a na końcu łagodnie zwalnia. Daje to wrażenie naturalnego "wjechania" i "wyhamowania" elementu.

Dlatego poprawny opis to: przejście obiektu o 200 pikseli w osi X z łagodnym przyspieszeniem i spowolnieniem.

Dlaczego pozostałe odpowiedzi są błędne?

  • Opcje z osią Y są błędne, bo w kodzie jest translateXProperty(), a nie translateY.
  • Opcje z 500 pikseli mylą czas (500 ms) z odległością. Liczba 500 w kodzie dotyczy wyłącznie trwania animacji.
  • Opcje z nagłym przyspieszeniem/spowolnieniem nie pasują do EASE_BOTH, który opisuje właśnie łagodny start i łagodne hamowanie, a nie skokowe zmiany prędkości.

W praktyce taki efekt jest często używany w kreacjach reklamowych i materiałach multimedialnych, bo płynne "easing" zwiększa czytelność ruchu i wygląda bardziej profesjonalnie niż ruch liniowy lub gwałtowny.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
translateX oznacza przesunięcie obiektu w poziomie (w osi X) względem jego położenia wynikającego z układu. Zwiększanie translateX przesuwa element w prawo, a zmniejszanie w lewo. To typowa metoda animowania "wjazdu" grafiki lub tekstu w kreacji.
Duration.millis(500) to czas trwania dojścia do wartości końcowej, czyli 500 ms (0,5 s). To nie jest odległość w pikselach. Częsty błąd to pomylenie tej liczby z dystansem ruchu, podczas gdy dystans wynika z wartości ustawionej dla translateX.
EASE_BOTH to interpolacja nieliniowa: animacja startuje wolniej, potem przyspiesza, a przed końcem znów zwalnia. W reklamie i multimediach taki easing wygląda bardziej naturalnie i estetycznie niż ruch o stałej prędkości, bo przypomina ruch obiektów w świecie rzeczywistym.
Klatką kluczową jest obiekt KeyFrame. Określa on moment na osi czasu (tu: po 500 ms) oraz wartości właściwości, do których animacja ma dojść. Wewnątrz KeyFrame umieszcza się zwykle jeden lub wiele KeyValue definiujących konkretne zmiany.
Najprościej patrzeć na nazwę animowanej właściwości. translateXProperty() oznacza ruch poziomy (oś X), a translateYProperty() – ruch pionowy (oś Y). W zadaniach egzaminacyjnych to kluczowa wskazówka, która pozwala uniknąć zgadywania na podstawie liczb.
W typowych zastosowaniach GUI wartość 200 dla translateX oznacza przesunięcie o ok. 200 pikseli w prawo. Dokładne wrażenie zależy jednak od skali, rozdzielczości i układu. Na egzaminie przyjmuje się standardową interpretację: wartość translateX to przesunięcie w jednostkach ekranu.
Najczęstsze błędy to: mylenie czasu (500 ms) z odległością (piksele), mylenie osi X z Y oraz błędna interpretacja interpolatora (uznanie EASE_BOTH za "nagły" ruch). Pomaga metoda: najpierw odczytaj właściwość (X/Y), potem dystans, na końcu interpolację.
Easing EASE_BOTH często stosuje się przy wejściach logotypów, nagłówków i CTA (wezwania do działania). Płynny start i płynne wyhamowanie poprawiają czytelność i "premium look" kreacji. Zbyt gwałtowne animacje mogą rozpraszać, a zbyt liniowe wyglądać technicznie i sucho.
Przy interpolacji liniowej obiekt porusza się ze stałą prędkością od początku do końca, bez fazy łagodnego startu i hamowania. Efekt bywa mniej naturalny. W zadaniach testowych różnica zwykle sprowadza się do opisu: "ruch jednostajny" vs "łagodne przyspieszenie i spowolnienie".
Warto przećwiczyć podstawowe pojęcia: oś X/Y, translacja, czas trwania, klatki kluczowe i typy interpolacji (liniowa, ease-in, ease-out, ease-both). Dobrą metodą jest przepisywanie krótkich przykładów i opisywanie słownie efektu: co się rusza, gdzie, ile i jaką ma dynamikę.
info

To pytanie poprawnie rozwiązuje 40% zdających egzamin. trudne

W praktyce zawodowej kluczowe jest to, że timeline uruchamia animację z jednym KeyFrame trwającym 500 ms.

Źródła:

  • OpenJFX JavaDoc: javafx.animation.Timeline (opis użycia i działania Timeline) https://openjfx.io/javadoc/ (pakiet javafx.animation, Timeline) - dostęp 2026-02-27
  • OpenJFX JavaDoc: javafx.animation.KeyFrame (konstruktor z Duration oraz KeyValue) https://openjfx.io/javadoc/ (pakiet javafx.animation, KeyFrame) - dostęp 2026-02-27
  • OpenJFX JavaDoc: javafx.animation.Interpolator (stała EASE_BOTH i jej znaczenie) https://openjfx.io/javadoc/ (pakiet javafx.animation, Interpolator) - dostęp 2026-02-27

Materiały:

  • Dokumentacja JavaFX dotycząca Timeline/KeyFrame/KeyValue
  • Ćwiczenia z animacji 2D: translacja, skala, rotacja i interpolacja
  • Materiały o zasadach płynności ruchu w grafice reklamowej (easing, timing)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego