Настройка состояния в FSM - PullRequest
1 голос
/ 18 августа 2011

Я впервые использую FSM на основе классов, и меня немного смущает, что лучше всего настроить начальное состояние.

Я добавил FSM в свойScreen класс, который я хочу использовать для обработки (в основном) переходов.Традиционно я бы сделал что-то вроде этого:

function update(frameTime : Number) : void
{
    switch(_currentState)
    {
        case STATE_TRANSITIONING_IN:
            slideTheButtonsIn();
            if(buttonsInPlace == true)
                changeState(STATE_ACTIVE);
        break;
        case STATE_ACTIVE:
            if(buttonClicked() == true)
                changeState(STATE_TRANSITIONING_OUT)
        break;
        case STATE_TRANSITIONING_OUT:
            slideButtonsOut();
            if(buttonsInPlace == true)
                removeThisScreen();
        break;
    }
}

Я думаю, что это довольно стандартный подход.

Так что моя проблема с моими новыми состояниями заключается в том, что ВОЗ отвечает за создание всех объектовэкран?Должен ли мой Screen создать все кнопки и прочее и затем передать их классу MainMenuTransitionInState, или класс MainMenuTransitionState должен создать кнопки и затем передать их, или я полностью пропустил отметку?

Оцените ваш мудрый совет здесь.Спасибо!

1 Ответ

1 голос
/ 30 августа 2011

A модель контроллера вида модели может помочь здесь.

MainMenuScreen (Просмотреть)

Это то, что будет отображать вашу модель. Работайте со всеми объектами, связанными с пользовательским интерфейсом, здесь. Запросите модель напрямую, чтобы инициализировать или обновить их.

MainMenuFsm (Контроллер)

Это обработчик событий вашего представления. Всякий раз, когда пользователь взаимодействует с вашим представлением, переводите действия в обновления для вашей модели.

MainMenuState (модель)

Сохраните свой штат здесь.

...