Najlepsze praktyki dotyczące przejścia od stanu zagnieżdżonego do stanu zagnieżdżonego (patrz diagram)

Usiłuję zawinąć mój umysł wokół najlepszego sposobu zaimplementowania zagnieżdżonych przejść stanu w jednym języku programowania (ActionScript). Powiedz, że mam strukturę podobną do tego drzewa zachowania:

Teraz wyobraź sobie, że każdy węzeł liścia jest punktem docelowym na stronie internetowej, podobnie jak obraz w galerii, lub komentarz zagnieżdżony w widoku postu zagnieżdżonym w widoku strony ... A celem jest umożliwienie uruchamiania animowanych przejść z liścia węzeł od węzła do liścia, animując poprzednie drzewo (od dołu do góry) i animując w bieżącym drzewie (od góry do dołu).

Gdybyśmy byli w węźle liścia najbardziej na dole po lewej stronie i chcieliśmy przejść do węzła liścia w prawym dolnym rogu, musielibyśmy:

przejście z dolnego-lewego-węzłapo zakończeniu (powiedz po sekundzie animacji), wyjdź z niego jako rodzic,po zakończeniu przejdź do trybu macierzystegopo zakończeniu, przejście do rodzica najbardziej prawegopo zakończeniu, przejście w prawo większości dziecipo zakończeniu przejście w liście

Moje pytanie brzmi:

Jeśli wyobrażasz sobie każdy z tych węzłów jako widoki HTML (gdzie liście są „częściowymi”, pożyczającymi termin z szyn) lub widokami MXML, gdzie zagnieżdżasz podkomponenty, a niekoniecznie znasz poziomy gniazd z root aplikacji, jaki jest najlepszy sposób animacji przejścia, jak opisano powyżej?

Jednym ze sposobów jest globalne przechowywanie wszystkich możliwych ścieżek, a następnie powiedzenie „Aplikacja, przejście tej ścieżki, przejście na tej ścieżce”. To działa, jeśli aplikacja jest bardzo prosta. Właśnie takGaia robi to, framework Actionscript. Ale jeśli chcesz, aby było możliwe przejście do / poza dowolnie zagnieżdżonymi ścieżkami, nie możesz przechowywać tego globalnie, ponieważ:

Actionscript nie mógł obsłużyć całego przetwarzaniaNie wygląda na dobrą enkapsulację

Więc to pytanie można przeredagować jako,jak animować lewostronny węzeł liściowy i jego rodziców, zaczynając od liścia, i animować w węźle najbardziej wysuniętego liścia, zaczynając od korzenia? Gdzie są przechowywane te informacje (co do przejścia i wyjścia)?

Innym możliwym rozwiązaniem byłoby powiedzenie „Aplikacja, przejście do poprzedniego węzła podrzędnego, a kiedy to się zakończy, przejście do bieżącego węzła podrzędnego”, gdzie „węzeł podrzędny” jest bezpośrednim dzieckiem roota aplikacji. Następnie najbardziej lewostronne dziecko katalogu głównego aplikacji (które ma dwa węzły potomne, z których każdy ma dwa węzły potomne), sprawdzałoby, czy jest we właściwym stanie (jeśli jego dzieci są „przeniesione”). Jeśli nie, wywołałby na nich „transitionOut ()”. W ten sposób wszystko byłoby całkowicie zamknięte. Ale wygląda na to, że będzie to dość intensywny procesor.

Co myślisz? Czy masz jakieś inne alternatywy? Możesz też wskazać mi jakieś dobre zasobyDrzewa zachowań AI lub hierarchiczne maszyny stanów, które opisują, jak praktycznie implementują asynchroniczne przejścia stanów:

Skąd oni nazywają „przejście” na obiekcie? Z korzenia lub konkretnego dziecka?Gdzie jest przechowywany stan? Globalnie, lokalnie? Jaki jest zakres określający, co wywołuje „przejścieIn ()” i „przejścieOut ()”?

Widziałem / przeczytałem wiele artykułów / książek na temat AI i State Machines, ale muszę jeszcze znaleźć coś opisującego, w jaki sposób wdrażają asychroniczne / animowane przejścia w złożonym projekcie MVC Object Oriented z 100s widoków / grafik uczestniczących w drzewie zachowań.

Czy powinienem wywoływać przejścia z obiektu nadrzędnego lub z dziecka?

Oto kilka rzeczy, które zbadałem:

Architektura zachowania gry AI: zachowanie wielu kolejekHierarchiczne maszyny państwowe - podstawowy sposób projektowaniaProgramowanie gry AI według przykładuZachowanie agenta zależne od celuAdvanced State Management Troy GardnerTroyworks 'AS3 COGS LibraryPopularne podejścia do projektowania drzewa zachowańBudowanie warunków sterowanych zdarzeniami dla asynchronicznego systemu sensorycznego

Chociaż niekoniecznie jest to problem z sztuczną inteligencją, nie ma innych zasobów opisujących sposób stosowania zagnieżdżonych architektur stanowych na stronach internetowych; to są najbliższe rzeczy.

Inny sposób na sformułowanie pytania: Jak nadawać zmiany stanu aplikacji? Gdzie trzymasz słuchaczy zdarzeń? Jak znaleźć widok do animacji, gdy jest on dowolnie zagnieżdżony?

Uwaga: nie próbuję budować gry, tylko próbuję budować animowane strony internetowe.

questionAnswers(3)

yourAnswerToTheQuestion