J'essaie de comprendre comment implémenter les transitions d'état imbriquées dans un langage de programmation à un seul thread (Actionscript). Disons que j'ai une structure comme celle-ci: Meilleure pratique pour la transition de l'état imbriqué à l'état imbriqué (voir diagramme)
Imaginez maintenant que chaque nœud feuille est un point de destination sur un site Web, comme une image dans une galerie ou un commentaire imbriqué dans une vue post imbriquée dans une vue de page. .. Et le but est de pouvoir exécuter des transitions animées du nœud feuille au nœud feuille, en animant l'arbre précédent (de bas en haut), et en animant dans l'arbre courant (de haut en bas).
Donc, si nous étions en bas à gauche nœud le plus de feuilles, et nous voulions aller en bas à droite nœud le plus de feuilles, nous devons:
- transition en bas à gauche -node
- sur complète (par exemple après une seconde d'animation), la transition à son parent,
- sur complète, la transition à son parent
- sur complète, transition dans le plus à droite parent
- sur complète, transition dans le bon mois st-enfant
- sur complète, la transition à la feuille
Ma question est:
Si vous imaginez chacun de ces noeuds que les vues HTML (où les feuilles sont « partials », empruntant le terme des rails), ou les vues MXML, où vous imbriquez des sous-composants, et vous ne connaissez pas nécessairement les niveaux d'imbrication de la racine de l'application, quelle est la meilleure façon d'animer la transition comme décrit ci-dessus? Un moyen consiste à stocker globalement tous les chemins possibles, puis de dire «Application, transition hors de ce chemin, transition dans ce chemin». Cela fonctionne si l'application est très simple. C'est ainsi que le fait Gaia, un framework Actionscript. Mais si vous voulez qu'il soit en mesure de passer dans des chemins/arbitrairement imbriqués, vous ne pouvez pas stocker que dans le monde parce que:
- Actionscript ne pouvait pas gérer tout ce que le traitement
- ne semble pas bonne encapsulation
donc, cette question peut être reformulée comme, comment vous animez le nœud le plus à gauche feuilles et ses parents, à partir de la feuille, et animez dans le nœud le plus à droite feuilles, en commençant par le racine? Où cette information est-elle stockée (que faire pour entrer et sortir)? Une autre solution possible consisterait simplement à dire "Application, sortir le noeud enfant précédent, et quand cela est terminé, transition dans le noeud enfant courant", où le "noeud enfant" est l'enfant direct de la racine de l'application. Ensuite, l'enfant le plus à gauche de la racine de l'application (qui a deux nœuds enfants, qui ont chacun deux nœuds enfants), vérifie s'il est dans le bon état (si les enfants sont 'sortis'). Sinon, il appellerait "transitionOut()" sur eux ... De cette façon, tout serait complètement encapsulé. Mais il semblerait que ce serait assez gourmand en processeur.
Qu'en pensez-vous? Avez-vous d'autres alternatives?Ou pouvez-vous me pointer vers de bonnes ressources sur AI Behavior Trees ou machines d'état hiérarchique qui décrivent la façon dont ils mettent en œuvre pratiquement transitions d'état asynchrones:
- D'où ils appellent « transitionOut » sur un objet? De la racine ou d'un enfant spécifique?
- Où l'état est-il stocké? Globalement, localement? Quelle est la portée définissant ce que l'on appelle "transitionIn()" et "transitionOut()"?
J'ai vu/lu de nombreux articles/ouvrages sur AI et machines d'état, mais je dois encore trouver quelque chose qui décrit la façon dont ils mettent effectivement en œuvre les transitions Asychronous/animation dans un objet complexe MVC projet orienté avec 100s de vues/Graphics participer à l'arbre de comportement.
Dois-je appeler les transitions de l'objet le plus parent ou de l'enfant?
Voici quelques-unes des choses que j'ai étudié:
- 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
Bien que ce n'est pas nécessairement un problème AI, il n'y a pas d'autres ressources qui décrivent comment appliquer les architectures d'Etat imbriquées à des sites Web; ce sont les choses les plus proches.
Une autre façon de formuler la question: Comment pouvez-vous diffuser les changements d'état à l'application? Où gardez-vous les auditeurs de l'événement? Comment trouvez-vous la vue à animer quand elle est arbitrairement imbriquée?
Note: Je n'essaie pas de construire un jeu, juste d'essayer de créer des sites Web animés.
est la structure de l'arbre toujours constante ou pourrait changer en fonction du chemin que l'utilisateur a pris? – Anurag
La structure de l'arbre est toujours constante. mais le nombre de nœuds pourrait changer (disons qu'une galerie a 10 images et une a 100). Fondamentalement, nous connaissons les structures possibles avant la main (quels parents peuvent avoir quels enfants), mais nous ne connaissons pas nécessairement le nombre ou le niveau de profondeur. –