對於含有多個State和Transition的UIComponent組件,設置currentState爲非當前狀態時,State和Effect有如下的執行順序
1、停止正在執行的Transition(如果有的話),移除EffectEvent事件偵聽
2、初始化新State,調用State.initialize方法
3、匹配Transition,捕獲Effect的起始值。
4、移除當前狀態,調用當前狀態所含有的Override.remove方法
5、設置_currentState的值
6、創建新State,調用新State包含的Override.apply方法。組件的屬性、Style、事件處理器設置爲新值。
7、Transition的Effect把組件的相關屬性、Style設置爲原狀態的值
8、Effect在一段時間內不斷更改相關屬性、Style的值
9、Effect執行完畢,把組件相關的屬性、Style等設置爲新State的指定值。
簡而言之,Transition的Effect更改的組件相關屬性、Style值 從原狀態指定值 → 新State指定的值 → Effect設置組件相關屬性、Style爲原狀態指定值 → Effect執行,一段時間內不斷改變值 → Effect設置組件相關屬性、Style爲新狀態指定值