Разумеется, нет никакого «стандартного» решения, всё зависит от конкретной реализации.
В простейшем случае можно сделать банальную очередь переходов, т.е. новый переход вызывается не мгновенно, а только после того, как полностью закончится предыдущий. Минусы очевидны — возможен UI-лаг, когда реакция на действия пользователя происходит с задержкой. Плюсы — проще в реализации.
А можно в качестве примера взять Qt Animation Framework, в котором это сделано довольно элегантно: там переход из состояния в состояние стоит отдельно, а визуальные анимации — отдельно. И промежуточных состояний нет. Таким образом при команде «перейди в такое-то состояние» переключение происходит мгновенно, а анимация в этот момент только-только начинается.
Если анимация ещё не завершилась, но уже поступает команда на следующий переход, то само переключение состояния происходит снова мгновенно, а анимация «подстраивается» под новые данные: старая анимация не завершается, а останавливается на том месте, где её застала новая команда, и уже из этого положения стартует анимация до новой точки. Минусы — сложнее в реализации. Плюсы — очень красиво и естественно :)