Цепочки

Набор блоков — это функции, которые могут приостановить или возобновить свое выполнение при этом сохраняя свое состояние. Из процесса выполнения цепочек можно в любой момент выйти, и при следующем вызове этой функции выполнение продолжится с той же точки, откуда вы вышли. Эти блоки можно ставить на паузу, чтобы дать другим функциям немного поработать. Их можно не только запускать и останавливать, но также приостанавливать и возобновлять.

../../../_images/image-16.png
  1. Выполнять цепочку постоянно - по достижению конца, цепочка не закончит свое выполнение, а самостоятельно перейдет к началу и будет перезапущена и так бесконечное количество раз.

Примечание

Этот блок необходим для повторения логической конструкции, так как блоки, добавленные в рабочую область выполняются единожды, в момент вызова блока или конструкции блоков. Подробнее о порядке выполнения блоков можно прочитать в соответствующей статье.

  1. Выполнить не дожидаясь - исполнение этого блока не блокирует исполнение следующего блока цепочки последовательности.
  2. Ожидать пока N истинно - блокирует выполнение цепочки, пока условие внутри него истинно.

Примечание

В качестве условия можно подставить любой логический блок.

  1. Ожидать в течении N секунд - после срабатывания, блокирует выполнение цепочки блоков на заданное количество секунд.

Примечание

Этот блок, почти полная замена сложной конструкции блоков с использованием таймера, выполнение которого приводило к выполнению следующих функций.

  1. Ожидать кадр - этот блок срабатывает при отрисовке следующего кадра.
  2. Остановить выполнение цепочки - блок останавливает алгоритм выполнения логической цепочки.
  3. Запустить цепочку заново - срабатывание этого блока приводит к запуску цепочки с самого начала.

Исполнение последовательных действий на примере

Чтобы понять, как работают цепочки, создадим небольшой проект.

  1. Разместите на сцене три объекта: куб, конус и пирамиду. Для удобства сделайте объекты статичными.
../../../_images/image-24.png
  1. Перейдите в редактор логики Blockly. и создайте следующую логику:
../../../_images/image-34.png
  1. Запустите проект в режиме предпросмотра на ПК. Каждый блок логики исполняется только после того, как исполнился предыдущий.
  2. Перейдите в редактор логики Blockly и измените все последовательные действия на одновременные:
../../../_images/image-42.png
  1. Запустите проект в режиме предпросмотра на ПК. Все блоки логики исполняются одновременно.
  2. Перейдите в режим редактирования сцены на ПК.
  3. Добавьте под каждым объектом по простой кнопке.
../../../_images/image-51.png
  1. Перейдите в редактор логики Blockly и измените обратно одновременные действия на последовательные.
  2. Добавьте следующую логику:
../../../_images/image-62.png
  1. Запустите проект в режиме предпросмотра на ПК. Дождитесь, пока закончится выполнение последовательных действий - все объекты изменят цвет.
  2. Нажмите на кнопку под кубом. Куб будет перемещаться по оси у до того момента, когда кнопка будет отжата. Чтобы убедиться в этом, нажмите еще раз на кнопку.
  3. Нажмите на кнопку под конусом. Конус будет масштабироваться по заданной оси. Подойдите к пирамиде и нажмите кнопку под ней - ничего не произошло, конус продолжает масштабироваться. Это происходит потому, что последовательное действие масштабирования не завершено. Для этого нужно отжать кнопку под конусом.
  4. Теперь нажмите кнопку под пирамидой. Пирамида начала вращение вокруг заданной оси и последовательное действие закончится только после отжатия кнопки.