13.07.2026 15:52

Moonlight Animate: efekty klipu sterowane skryptem

⏱️ 2 min read
Share:

Animowalne efekty klipu — grading, glow, rozmycie, winieta, lumetri, a od niedawna także światło — miały dotąd jedną drogę: ręczne klikanie w panelu Sterowanie efektami. Od dziś całym tym systemem można sterować ze skryptu.

Efekty i klatki kluczowe z kodu

Nowe funkcje w przestrzeni app.anim.* dają skryptom pełną kontrolę nad efektami dowolnego klipu:

  • app.anim.effectTypes() — lista dostępnych typów efektów; app.anim.clipEffects(id) — co jest już nałożone na klip.
  • app.anim.addClipEffect(clipId, typ) zwraca identyfikator efektu; do tego removeClipEffect i setEffectEnabled.
  • app.anim.setEffectParam(clipId, effectId, nazwa, wartość) ustawia wartość statyczną.
  • app.anim.setEffectKeyframe(clipId, effectId, parametr, klatka, wartość, easing) — dokłada klatkę kluczową parametru, a więc animuje kolor, pozycję światła czy promień rozmycia w czasie; removeEffectKeyframe ją cofa.

Efekt dodany skryptem jest nie do odróżnienia od tego z panelu — ta sama walidacja z rejestru efektów, ta sama koercja wartości, to samo jedno cofnięcie na operację i ta sama propagacja we współpracy. Skrypt może więc jednym przebiegiem rozstawić ruchome światła na kilkunastu klipach albo zaanimować grading całej sekwencji.

Bezpiecznie i przewidywalnie

Wartości parametrów są przycinane do zakresów z rejestru — żaden skrypt nie ustawi już rozmycia o promieniu miliona pikseli, który zawiesiłby aplikację. Nieznane typy i nieanimowalne parametry są odrzucane z czytelnym ostrzeżeniem zamiast po cichu psuć projekt, a usunięcie ostatniej klatki kluczowej zamraża jej wartość, żeby obraz nie „przeskoczył".

Przy okazji domknęliśmy dwie drobne luki: app.image.contentAwareFill() wypełnia zaznaczenie z otoczenia, a app.color.setBucketExpand() / setBucketCloseGap() ustawiają parametry wypełniania rysunku kreskowego — wszystko, co klikalne, jest też skryptowalne.

📚 Related posts

23.07.2026 19:40

Moonlight Animate: zapis, który mówi, i eksport, który pokazuje

Ctrl+S wreszcie zapisuje po cichu, każdy zapis potwierdza nazwę i wagę pliku, a nowy dialog „Eksportuj jako” pokazuje zakodowany wynik i dokładny rozm...
Continue reading →
14.07.2026 22:19

Silnik gier: od szablonu do grywalnej gry RPG top-down

Startowy szablon silnika gier to teraz kompletny, grywalny wycinek gry RPG top-down: chodzenie po siatce, rozmowy z postaciami, przeciwnik goniący gdy...
Continue reading →
14.07.2026 19:16

Moonlight Animate — system dialogów w grach

Silnik gier 2D w Moonlight Animate ma teraz kompletny system dialogów: kwestie z efektem maszyny do pisania, wybory z warunkami, zmienne fabularne i g...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.