Наилучшая практика перехода от вложенного состояния к вложенному (см. Диаграмму)

Я пытаюсь обдумать лучший способ реализации вложенных переходов состояний в однопоточном языке программирования (Actionscript). Скажем, у меня есть такая структура:

Теперь представьте, что каждый конечный узел является точкой назначения на веб-сайте, например, изображением в галерее или комментарием, вложенным в представление сообщения, вложенное в представление страницы ... И цель состоит в том, чтобы иметь возможность запускать анимированные переходы из листа узел к листу, анимация предыдущего дерева (снизу вверх) и анимация в текущем дереве (сверху вниз).

Итак, если бы мы находились в самом нижнем левом листовом узле и хотели бы перейти в самый нижний правый конечный узел, нам пришлось бы:

переход из нижнего левого узлапо завершении (скажем, после секунды анимации), переходите это 'родитель,по завершении, переходи это 'родительпо окончании переход IN к самому правому родителюпо завершению, переход в правое большинство-ребенокпо завершению, переход в лист

Мой вопрос:

Если вы представляете каждый из этих узлов в виде HTML-представлений (где листьяобертоны, заимствуя термин из рельсов), или представления MXML, где вывложенные подкомпоненты, и вы неНе обязательно знать уровни вложенности из корня приложения, как лучше всего анимировать переход, как описано выше?

Одним из способов является сохранение всех возможных путей в глобальном масштабе, а затем сказать:Приложение, переход по этому пути, переход по этому пути ", Это работает, если приложение очень простое. Тот'шоуGaia делает это, ActionScript Framework. Но если вы хотите, чтобы он мог переходить в / из произвольно вложенных путей, вы можете 'не хранить это глобально, потому что:

Actionscript не могобрабатывать всю эту обработкуБезразлично»не похоже на хорошую инкапсуляцию

Таким образом, этот вопрос может быть перефразирован каккак вы анимируете левый крайний узел, и это 's родителей, начиная с листа, и анимировать в самом правом листе узла, начиная с корня? Где хранится эта информация (что нужно входить и выходить)?

Другим возможным решением было бы просто сказать:Приложение, переход из предыдущего дочернего узла, и когда это 'завершено, переход в текущий дочерний узел ", где "дочерний узел " является прямым потомком корня приложения. Затем самый левый дочерний элемент корня приложения (который имеет два дочерних узла, каждый из которых имеет два дочерних узла), проверит, 'в правильном состоянии (если этос детьмиперешел). Если нет, то позвонил быtransitionOut ()» на них ... Таким образом, все будет полностью заключено в капсулу. Но похоже, чтобыл бы довольно интенсивным процессором.

Как вы думаете? Есть ли у вас другие альтернативы? Или вы можете указать мне какие-либо хорошие ресурсы наAI Поведенческие Деревья или иерархические конечные автоматы, которые описывают, как они практически реализуют асинхронные переходы состояний:

Откуда они звонятtransitionOut» на объекте? От корня или конкретного ребенка?Где хранится состояние? Глобально, локально? Какова сфера, определяющая, что называет "transitionIn ()» а также "transitionOut () "?

Я видел / читал много статей / книг по ИИ и машинам состояний, но мне еще предстоит найти что-то, описывающее, как они на самом деле реализуют асинхронные / анимированные переходы в сложном объектно-ориентированном проекте MVC с сотнями видов / графиков, участвующих в дереве поведения.

Должен ли я вызывать переходы от самого родительского объекта или от дочернего?

Вот некоторые из вещей, которые ямы осмотрели:

Архитектура для игрового поведения AI: поведение нескольких очередейИерархические государственные машины - принципиально важный способ дизайнаПрограммирование игрового ИИ на примереПоведение агента, ориентированное на цельРасширенное государственное управление Трой ГарднерTroyworks' Библиотека AS3 COGSПопулярные подходы к дизайну дерева поведенияПостроение управляемых событиями условий для асинхронной сенсорной системы

Хотя это не обязательно проблема ИИ, нет других ресурсов, описывающих, как применять вложенные архитектуры состояний к веб-сайтам; это самые близкие вещи.

Еще один способ сформулировать вопрос: как вы транслируете изменения состояния в приложение? Где вы храните слушателей мероприятия? Как вы находите, что посмотреть, чтобы оживить, когда это "s произвольно вложенный?

Примечание: я не пытаюсь создать игру, я просто пытаюсь создавать анимированные сайты.

Ответы на вопрос(3)

Ваш ответ на вопрос