Я пытаюсь реализовать FSM, который обрабатывает кнопку следующим образом:государственное дублирование в ФОМ
Когда в режиме ожидания, он просто ждет кнопки, чтобы получить нажатый.
Когда он нажат, он переходит в состояние intButtonPress, где запускается 2-секундный таймер. Если время ожидания, это означает, что кнопка удерживалась в течение 2 секунд, а следующее состояние должно быть действием. Если кнопка отпускается до истечения времени ожидания, состояние возвращается в режим ожидания, так как кнопка не удерживалась достаточно долго.
Когда в режиме действия выполняется какое-либо действие, его можно прервать нажатием кнопки. Проблема в том, что я не могу повторно использовать состояние intButtonPress, так как переход таймаута вернется в состояние Action, поэтому очевидным решением является использование идентичного состояния, единственное отличие которого заключается в том, что он приводит к состоянию ожидания, но он уродлив.
Есть ли лучшие способы справиться с этим?
FSM здесь: http://i.imgur.com/m57yaMw.png (не вставлять фотографии)
Планируете ли вы на самом деле закодировать свою иерархическую машину состояний или это просто теоретическое упражнение? –
Да, используя [hsm-statechart] (http://code.google.com/p/hsm-statechart), хотя я еще не обошел его. –