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

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

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

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

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

Мой вопрос:

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

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

Actionscript не может справиться со всей этой обработкойНе похоже на хорошую инкапсуляцию

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

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

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

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

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

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

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

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

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

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

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

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

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