7. Связи
Связь отвечает на вопрос «что дальше». У большинства компонентов исходов несколько, и глава — про то, как их задавать и как читать нарисованное.
Протянуть связь
Нажмите Ctrl, зажмите левую кнопку на компоненте-источнике, доведите курсор до цели, отпустите. Пока курсор в пути, за ним тянется пунктирная стрелка, а компонент под курсором обводится рамкой — видно, куда попадёте.
Если связей надо провести много подряд, вместо клавиши удобнее инструмент Протягивание связи в палитре: он делает то же самое, но Ctrl держать не нужно.
Отпустить стрелку в пустоте — значит очистить свойство перехода. Это единственный способ убрать связь: отдельной команды «удалить связь» нет, потому что связь не объект, а значение свойства.
Какую ветку тянет Ctrl
У компонента переходов бывает несколько, а протяжка одна. Ctrl тянет основную ветку — ту, по которой вызов идёт при обычном ходе событий.
Остальные ветки задаются двумя способами:
- Цифрой
-
зажмите цифру от 1 до 9 и протяните — уйдёт та ветка, за которой эта цифра закреплена. У «Сравнения», например, 1 — «Правда», 2 — «Ложь». Если у типа нет ветки с такой цифрой, связь не протянется вовсе: выдумывать ветку за вас редактор не станет.
- Из панели
-
у каждой ветки есть своя строка в свойствах, и цель выбирается в ней списком.
Строки перехода узнаются по названию: Переход — основная ветка, Переход, ошибка — что делать, если шаг не удался. У «Меню» и подобных типов ветки живут не строками, а таблицей — это разбирается в главе про меню и переводы.
Как читать нарисованное
Рядом с каждой стрелкой подписано, при каком условии она сработает:
Правда, Ложь, Ошибка, Время, цифра нажатой кнопки. Подпись —
это и есть смысл ветки.
Цвет помогает охватить карту взглядом.
| Цвет | Что означает |
|---|---|
Серо-синий |
Обычный ход событий |
Зелёный |
Условие выполнилось: «Правда», ветка меню, успешный ответ |
Красноватый |
Что-то пошло не так: «Ложь», ошибка, истекло время |
Красных линий на карте много, и это нормально: у любого шага должен быть предусмотрен неудачный исход.
Пустая ветка: когда это опасно
Незаполненная ветка означает разное у разных типов, и разницу стоит знать.
- У части компонентов сервер подставляет основную ветку сам
-
если у Воспроизведения или Уведомления не заполнен Переход, ошибка, вызов при ошибке уйдёт по обычному Переходу — работа продолжится.
- У ветвящих типов каждая стрелка важна сама по себе
-
у Сравнения и Меню подставлять нечего: не заполнена ветка, по которой пошло управление, — сценарий на этом обрывается.
|
Отсюда правило: у Сравнения должны вести куда-то обе ветки, у Меню — все пункты таблицы и Переход, прочее. Пустая ветка здесь — это оборванный вызов, а не «пойдёт как обычно». |
|
Цвет — подсказка, а не правило. Что именно считается основным ходом, задано в метаданных для каждого типа, и у ветвящих типов основными считаются обе ветки: и «Правда», и «Ложь» одинаково законны. Смысл всегда написан подписью — на неё и стоит смотреть. |
Подписи, которые не поместились
Если между компонентами мало места, подпись у стрелки не рисуется: она налезала бы на соседние и мешала бы читать саму карту. Ветка при этом никуда не делась — её видно в свойствах и в трассировке.
Развести компоненты пошире — не косметика, а способ увидеть сценарий.
Ходить по связям
Мышью связи не только рисуют, но и читают: Ctrl+→ переводит выделение на цель исходящей связи, Ctrl+← — на источник входящей, Ctrl+↓ и Ctrl+↑ перебирают соседние ветки. Подробнее — в главе про навигацию.
Куда вызов придёт из этой точки целиком, а не на один шаг, показывает трассировка — клавиша T или пункт меню Трассировать ветку.