Ich versuche mich Gedanken über den besten Weg zu verschachtelten Zustand Übergänge in einer einzigen Thread-Programmiersprache (Actionscript) zu implementieren. Nehmen wir an, dass jeder Blattknoten ein Zielpunkt auf einer Website ist, wie ein Bild in einer Galerie, oder ein Kommentar, der in einer in einer Seitenansicht eingebetteten Postansicht verschachtelt ist. .. Und das Ziel ist es, animierte Übergänge vom Blattknoten zum Blattknoten ausführen zu können, indem der vorherige Baum animiert wird (von unten nach oben) und im aktuellen Baum animiert wird (von oben nach unten).Best Practice für den Übergang vom geschachtelten Zustand zum geschachtelten Zustand (siehe Diagramm)
Wenn wir also in den unteren linken meisten Blattknoten waren, und wollten wir unten rechts am weitesten Blattknoten gehen, würden wir müssen:
- Übergang aus unten links -node
- auf vollständig (etwa nach einer Sekunde der Animation), Übergang heraus, es ist Eltern,
- auf vollständige, Übergang aus ist es Eltern
- auf vollständige, Übergang in der am weitesten rechts stehenden Mutter
- auf komplett, Übergang in rechts mo st-Kind
- auf komplett, Übergang in Blatt
Meine Frage ist:
Wenn Sie jeden dieser Knoten als HTML-Ansichten (wo die Blätter sind ‚partials‘, leihen den Begriff von Schienen vorstellen) oder MXML-Ansichten, in denen Sie Unterkomponenten verschachteln, und Sie kennen die Verschachtelungsebenen nicht unbedingt aus dem Anwendungsstamm, was ist der beste Weg, um den Übergang wie oben beschrieben zu animieren?
Eine Möglichkeit besteht darin, alle möglichen Pfade global zu speichern und dann zu sagen: "Anwendung, Übergang aus diesem Pfad, Übergang in diesem Pfad". Das funktioniert, wenn die Anwendung sehr einfach ist. So funktioniert Gaia, ein Actionscript-Framework. Aber wenn Sie es möchten in der Lage sein, beliebig verschachtelt Pfade, um den Übergang in/out, Sie nicht, dass global speichern kann, weil:
- Actionscript nicht alles, was die Verarbeitung umgehen konnte
- nicht wie eine gute Kapselung scheinen
so kann diese Frage, umformuliert wird, wie Sie das am weitesten links stehenden Blattknoten animieren heraus tun und es Eltern, aus dem Blatt beginnen, und in dem am weitesten rechts-Blattknoten animieren, mit dem Start Wurzel? Wo werden diese Informationen gespeichert (was wird ein- und ausgeschaltet)?
Eine andere mögliche Lösung wäre, einfach zu sagen "Anwendung, vorherigen Knoten untergehen, und wenn das abgeschlossen ist, Übergang im aktuellen untergeordneten Knoten", wobei der "untergeordnete Knoten" das direkte Kind des Anwendungsstamms ist. Dann würde das unterste Kind des Anwendungsstamms (das zwei untergeordnete Knoten hat, die jeweils zwei untergeordnete Knoten haben) prüfen, ob es sich im richtigen Status befindet (wenn es untergeordnete Elemente sind). Wenn nicht, würde sie "transitionOut()" auf ihnen aufrufen ... So wäre alles vollständig gekapselt. Aber es scheint, als wäre das ziemlich prozessorintensiv.
Was denkst du? Hast du noch andere Alternativen?Oder können Sie mir zeigen zu jedem guten Ressourcen auf AI Behavior Trees oder Hierarchical State Machines, die beschreiben, wie sie praktisch asynchronen Zustandsübergänge implementieren:
- Von wo kommen sie „transitionOut“ auf ein Objekt aufrufen? Von der Wurzel oder einem bestimmten Kind?
- Wo ist der Status gespeichert? Weltweit, lokal? Was definiert der Bereich, der "transitionIn()" und "transitionOut()" aufruft?
Ich habe/gesehen viele Artikel/Bücher über AI und State Machines lesen, aber ich habe noch etwas zu finden, die beschreiben, wie sie tatsächlich asychronous/animierte Übergänge in einem komplexen MVC Object Oriented Projekt mit 100s von Ansichten/Grafik implementieren Teilnahme am Verhaltensbaum.
Sollte ich die Übergänge vom übergeordneten Objekt oder vom Kind aufrufen?
Hier sind einige der Dinge, die ich untersucht habe:
- An Architecture for Game Behavior AI: Behavior Multi-Queues
- Hierarchical State Machines — a Fundamentally Important Way of Design
- Programming Game AI by Example
- Goal-Driven Agent Behavior
- Advanced State Management by Troy Gardner
- Troyworks' AS3 COGS Library
- Popular Approaches to Behavior-Tree Design
- Building Event-Driven Conditions for an Asynchronous Sensory System
Dies ist zwar nicht unbedingt ein AI Problem ist, gibt es keine andere Ressourcen beschreiben, wie verschachtelten Zustand Architekturen auf Websites anzuwenden; Das sind die nächsten Dinge.
Eine andere Möglichkeit, die Frage zu formulieren: Wie senden Sie Statusänderungen an die Anwendung? Wo halten Sie die Event-Listener? Wie finden Sie, welche Ansicht animiert werden soll, wenn sie willkürlich verschachtelt ist?
Hinweis: Ich versuche nicht, ein Spiel zu bauen, nur um animierte Websites zu erstellen.
ist die Baumstruktur immer konstant oder könnte sich ändern, abhängig vom Pfad, den der Benutzer genommen hat? – Anurag
Baumstruktur ist immer konstant. aber die Anzahl der Knoten könnte sich ändern (sagen wir, eine Galerie hat 10 Bilder und eine hat 100). im Grunde kennen wir die möglichen Strukturen vorher (welche Eltern können welche Kinder haben), aber wir kennen die Anzahl oder Tiefenstufe nicht unbedingt. –