mówię, że jest to możliwe, bez faktycznie robi :-)
to tylko przypuszczenie jak mam małe doświadczenie w tej dziedzinie i nikt w ogóle z Elm.
Myślę, że najbliżej Elma stworzysz opakowanie ScalaFX dla ReactFX, choć prawdopodobnie będziesz mógł również użyć lambd do Java 8 w połączeniu z ReactFX zamiast Scala. Najprawdopodobniej będziesz musiał wdrożyć kilka rozszerzeń do ReactFX, a także różnych innych urządzeń, aby uzyskać abstrakcje i elegancję, której pragniesz.
Zamówienie Deprecating the Observer Pattern, jeśli jeszcze tego nie zrobiłeś. Myślę, że jest to bardzo istotne w tym temacie, zwłaszcza jeśli chodzi o myślenie o reaktywnym modelu programowania, w przeciwieństwie do modelu obserwowalnego (czyli JavaFX ChangeListeners). To powiedziawszy, myślę, że jeśli użyjesz bibliotek takich jak ReactFX, które są zbudowane na strukturze JavaFX i strukturach nasłuchujących, prawdopodobnie skończysz z wyższym poziomem abstrakcji strumieni zdarzeń, które są przydatne do programowania reaktywnego.
Oczywiście, możesz zrobić grę Mario w JavaFX bez użycia ReactFX, ale kod będzie zupełnie inny i będziesz pracował na innym poziomie abstrakcji do tego, czego używałbyś z ReactFX. Tak czysty JavaFX, bez ReactFX będzie mniej Wiązów podobnych.
Dla warstwy sieciowej, akka może być użyty do stworzenia reaktywnej struktury dla gier wieloosobowych, co pozwoliłoby ci używać programowania od góry do dołu, zarówno w twoim interfejsie, jak iw systemie komunikacyjnym.
W przypadku animacji Sprite w próbce Mario należy zastosować kod netopyr dla Creating a Sprite Animation with JavaFX.
Do obliczeń fizyki można użyć biblioteki JBox2D. Trzeba utworzyć coś w rodzaju reaktywnego wrappera wokół JBox2D, aby zdawać sobie sprawę z właściwości takich jak właściwości JavaFX i strumienie zdarzeń i subskrypcje ReactFX. Dla uproszczonej próbki Mario użycie zewnętrznej biblioteki prawdopodobnie byłoby większym problemem niż jej wartość. Zamiast tego możesz użyć podstawowego modelu fizyki domowej (np.coś podobnego do tego ball animation experiment) i podłącz go do swojego reaktywnego frameworka.
Radzę skontaktować się z Tomasem Mikula, który stworzył ReactFX, i poprosić go o reaktywne programowanie na pytania JavaFX. Robert Ladstätter również zrobił kilka fajnych rzeczy z ScalaFX i może być w stanie udzielić ci dalszych porad, chociaż nie wiem, czy w ogóle pracował z programowaniem reaktywnym. Sugerowałbym także pingowanie ScalaFX users forums, ale widzę, że już to zrobiłeś :-)
Elm Mario sample jest dość prosty, więc radzę spróbować tłumaczenia na ReactFX. Wtedy myślę, że odpowiedź na twoje pytanie stanie się oczywista. Teraz, gdy napisałem to =>, jeśli nie zaimplementujesz go i nie opublikujesz rozwiązania jako poprawnej odpowiedzi, być może będę musiał Cię wytropić i nie będziesz chciał :-)
Bardzo precyzyjna odpowiedź pokazująca zgodność między Elm i JavaFX! Ta odpowiedź pomoże mi nawet w mojej pracy magisterskiej. (Btw, dobra robota na ReactFX, jej przykłady na twoim [blogu] (http://tomasmikula.github.io/blog/2014/04/25/combining-reactfx-and-asynchronous-processing.html) są imponujące. zaplanowałem część dotyczącą ReactFX w mojej pracy magisterskiej.) – Eugen
Dziękuję za szczegółową odpowiedź. A co z tłumaczeniem konstruktów Elma na JavaFX + RXJava? Czy byłoby łatwiej (mniej skromniej) w porównaniu z tłumaczeniem konstrukcji Elma na JavaFX? – jhegedus
Nie sądzę. Płyta wzorcowa jest spowodowana brakiem elementów Wiązania _ języka Java, takich jak silniejsze wnioskowanie typów, aliasy typów, typy rekordów ... Żadne biblioteki Java nie dodadzą tego do języka. Funkcjonowanie czystych (bez efektów ubocznych) funkcji i niezmiennych obiektów nie może być egzekwowane w Javie, ale można je osiągnąć dzięki własnej dyscyplinie. Węzły JavaFX można modyfikować według projektu, więc potrzebujesz niezmiennej biblioteki widgetów, o której wspomniałem. Kompozycja funkcji jest dość łatwa dzięki językom Java 8. –