Если я правильно понял вашу проблему - вы хотели закончить текущий поток, но все еще имеете щелчок по меню - это правильно?
Если это так, у вас есть общий общий поток, который наследуется всеми вашими субпотоками. Затем добавьте это в тег flow
каждого из ваших потоков, где commonFlow
- это имя или идентификатор вашего файла определения глобального потока.
parent="commonFlow"
В этом глобальном определении потока, определяет переход к опции меню:
<global-transitions>
<!-- If Menus are triggered on flows, we end them first. -->
<transition on="menuClick" to="endCurrentFlowThenMenu"/>
</global-transitions>
А затем определить редирект для меню:
<end-state id="endCurrentFlowThenMenu" view="flowRedirect:menuView"></end-state>
Однако, это работает только когда текущий поток - поток родительского/верхнего уровня. Если это Подпоток, он получает немного грязный - вам нужна работа вокруг так, что все Подпотоки оканчиваются первым:
<global-transitions>
<!-- If Menus are triggered on flows and subflows, we end them first. -->
<transition on="menuClick" to="endCurrentFlowThenMenuLevel1"/>
<transition on="endCurrentFlowThenMenuLevel1" to="endCurrentFlowThenMenuLevel2"/>
</global-transitions>
В этом случае вы определить соответствие конечных состояний:
<end-state id="endCurrentFlowThenMenuLevel1" view="flowRedirect:newFlow">
</end-state>
<end-state id="endCurrentFlowThenMenuLevel2" view="flowRedirect:newFlow">
</end-state>
Причина, по которой я повторяю атрибут view
в каждом конечном состоянии, так что он все еще может работать, даже если текущий поток является потоком верхнего уровня. В зависимости от максимального глубинного подпотока вам необходимо иметь несколько переходов и конечных состояний, чтобы они соответствовали (т. Е. Если у вас самая глубокая функциональность может иметь 2 подпотока, повторите выше 3 раза).
Уловка здесь, если текущий поток уже является потоком верхнего уровня, SWF не будет пузыриться над родителем и просто выполнит команду flowRedirect
.
Если, однако, текущий поток является субпотоком, SWF не будет выполнять перенаправление в подпотоке, но вместо этого сначала начнет пузыриться до родителя, ища подходящий переход для текущего подпотока, который только что закончился. Он будет продолжать делать это до тех пор, пока не найдет поток верхнего уровня, и в этом случае он выполнит перенаправление, эффективно прекратив все субпотоки в этом процессе.