Chcę animować obiekty MoviveClips/Sprite tak płynnie, jak to możliwe. Jednak do tej pory jedyną metodą, która działa, jest umieszczenie kodu ruchu w module obsługi zdarzenia EnterFrame. Jest jeden problem z tym podejściem: kiedy ilość klatek na sekundę na konkretnej maszynie jest poniżej pożądanego framerate, cała gra zwalnia. Chcę móc to robić w sposób niezależny od czasu.ActionScript 3: Płynna animacja programistyczna
Odpowiedz
Istnieją dwa sposoby na programową animację w odtwarzaczu Flash. Pierwsze, które już wskazałeś, używając onEnterFrame. Jak już jednak zauważyłeś, aby uzyskać płynną animację, musisz zwiększyć ogólną liczbę klatek filmu. Wykonanie tej czynności spowoduje również zwiększenie obciążenia procesora przez cały czas działania pliku SWF. To nie jest coś, czego zawsze chcesz.
Innym sposobem na programową animację jest użycie zegara. W ramach obsługi zegara można wywołać funkcję o nazwie updateAfterEvent
, która aktualizuje ekran niezależnie od ustawionego FPS dla SWF. Dlatego użycie timera pozostawia bramę do zrobienia płynnej animacji w odtwarzaczu Flash bez zwiększania ogólnej szybkości odtwarzania pliku SWF.
Dwa lata temu postanowiłem stworzyć własne biblioteki tween dla Flasha (z powodu moich frustracji z dostępnymi wówczas bibliotekami tween). Wydałem go pod nazwą Coretween, a ta biblioteka pozwala między innymi wybrać preferowany typ animacji dla każdej animacji. Na stronie dokumentacji podam example różnicę między animacją opartą na klatkach i opartą na czasie. Przykładowy plik SWF na tej stronie działa z szybkością 12 klatek na sekundę, ale jak widać, dolne kółko jest o wiele bardziej płynne, ponieważ jest sterowane zegarem o wartości 60 klatek na sekundę i aktualizuje ekran zależny od szybkości klatek SWF. Pamiętaj jednak, że nawet zegar tyka przy 60 fps w rzeczywistości Flash Player nigdy nie będzie w stanie osiągnąć tej liczby klatek na sekundę. Będzie jednak starał się osiągnąć tę liczbę klatek na sekundę, co spowoduje znacznie lepszą animację.
Niestety do tej pory nie byłem w stanie wydać wersji 1.0 mojej biblioteki, ale z tego, co wiem, jest całkiem stabilna. Możesz z niego korzystać w dowolny sposób, jaki uznasz za stosowny. Korzystałem z CENTween w wielu komercyjnych produkcjach, w tym w tym banku, który zrobiliśmy dla Ciebie w Australii, w banku StGeorge.
Oto kilka bibliotek animacji opartych ActionScript:
Oboje pracują dobrze i powinno pomóc, co trzeba.
Niestety nie, ponieważ potrzebuję płynnej kontroli nad moimi obiektami w czasie rzeczywistym. Metoda tweener, która gwarantuje, że czasami w przyszłości obiekt dotrze do pożądanej pozycji, jest "ungood". – George
- 1. Płynna animacja KineticJS, kontrolowana prędkość
- 2. Płynna animacja podczas ożywiania CALayer za shadowPath
- 3. Debugowanie Haxe (ActionScript 3)
- 4. Trygonometria trójkąta (ActionScript 3)
- 5. Actionscript 3 REPL
- 6. actionscript 3 i JSON
- 7. Praktyka programistyczna
- 8. Pobierz rozmiar skryptu ActionScript 3
- 9. Wiele dziedziczenia w ActionScript 3
- 10. Swift 3 UIView animacja
- 11. Narysuj tekst na kształt w ActionScript 3
- 12. Osadzanie mp3 w actionscript 3 nie działa
- 13. Komunikacja między C++ i actionscript 3
- 14. as3 losowa tablica - randomize array - actionscript 3
- 15. Składnia statycznego konstruktora w Actionscript-3?
- 16. Literał łańcuchowy wielu liter w Actionscript 3
- 17. Actionscript 3: pobierz obiekt wyświetlany w pikselach
- 18. Sortowanie tablicy obiektów w ActionScript 3
- 19. ActionScript 3 Specyfikacja jako plik PDF?
- 20. Ustawienie argumentu funkcji w ActionScript 3
- 21. Rozmiary typów danych dla ActionScript 3
- 22. Jak usunąć/gc obiekt w Actionscript 3?
- 23. 3 Divy, 2 Stała szerokość i 1 Płynna
- 24. Płynna NHibernate - Zbędne zmiana
- 25. Płynna rotacja z kwaterami
- 26. Animacja Genie JavaScript?
- 27. Dwa kolory w jednym polu tekstowym za pomocą Actionscript 3
- 28. Jak poprawnie przetestować dziedziczenie klas w ActionScript 3?
- 29. Wyodrębnianie "pliku" z pełnej ścieżki w actionscript 3
- 30. pakiet importu ActionScript 3. * Vs pakiet importujący. Klasa
Awesome! Właśnie to czego potrzebuje. Będę czekać z akceptacją, aby uzyskać więcej upvotes :) – George
Dzięki. Ludzie mogą nadal głosować, gdy odpowiedzi są akceptowane. :) – Luke
Pytania bez zaakceptowanych odpowiedzi zwykle są bardziej uważne. Większość użytkowników nie przejmuje się przywracaniem odpowiedzi po jej zaakceptowaniu. – George