Пазлы для опытных пользователей (Advanced)
Используйте эти пазлы для реализации расширенных возможностей в ваших приложениях, таких как работа в сети, взаимодействие с «Ява Скрипт»-кодом, преобразование данных, сохранение/восстановление состояния и многое другое.

Содержание
Перечень пазлов
comment
Этот пазл выполняет чисто визуальную функцию комментирования скрипта. Также он добавляет строку с комментарием на «Ява Скрипте» в файл visual_logic.js.

exec script
Этот пазл выполняет указанный «Ява Скрипт»-код. Он использует редактор Ace для отображения и редактирования содержимого. Соответствующие сочетания клавиш можно посмотреть здесь. Поле редактора может быть растянуто под нужные размеры.
Вы можете использовать следующие встроенные переменные:
- app — экземпляр приложения, для получения подробной информации смотрите App
- v3d — пространство имен v3d, которое содержит все модули движка
- puzzles — объект содержащий объявленные в пазлах процедуры, API физического движка, и др.
- VARS — доступ к переменным пазлов
- PROC — доступ к процедурным пазлам

Особенности использования встроенных модулей для вкладки "Init" и других вкладок
- Встроенная переменная app недоступна для этого пазла, если она используется внутри вкладки Init, поскольку на этом этапе приложение еще не инициализировано должным образом.
- Переменные и процедуры, объявленные на вкладке Init, не могут быть доступны из других вкладок через VARS, PROC и наоборот.
call external function
Выполняет функцию, указанную в «Ява Скрипт»-коде приложения. По желанию передает параметры для использования в качестве аргументов функции.

Для того, чтобы добавить функцию в код приложения на «Ява Скрипте», откройте .js-файл приложения (например, my_awesome_app.js, расположенный в подпапке my_awesome_app папки приложений) в любом текстовом редакторе. Найдите prepareExternalInterface
и добавьте свою функцию внутрь этого объявления (между фигурными скобками), чтобы она выглядела следующим образом:
function prepareExternalInterface(app) {
app.ExternalInterface.myJSFunction = function(numericArg, textArg) {
alert('Got some params from Puzzles: ' + numericArg + ' and ' + textArg);
}
}
load data
Загрузить данные из указанного места. Доступ к полученным данным можно получить с помощью пазла loaded data. JSON-объекты автоматически конвертируются в словари, а все остальные форматы данных возвращаются как текстовые строки.

По умолчанию результат запроса кешируется, поэтому все последующие вызовы этого пазла возвращают то же самое значение. Чтобы отключить кеширование, нажмите на значок шестерёнке и включите опцию disable caching. Настройка enable "on error" slot используется для обработки ошибок с помощью дополнительного слота on error do.

send data
Отправляет указанные данные с помощью асинхронного POST HTTP-запроса. Доступ к полученным данным можно получить с помощью пазла loaded data. JSON-объекты (отправляемые и получаемые) автоматически конвертируются в словари, значения form data отправляются как есть, а все остальные форматы данных отправляются/принимаются как текстовые строки.

Слот enable "with headers " slot используется чтобы назначить дополнительные заголовки запроса с помощью объекта-словаря. Настройка enable "on error" slot используется для обработки ошибок с помощью дополнительного слота on error do.

Учитывайте, что браузеры могут сохранять локальные копии полученных данных для ускорения последующих загрузок. Чтобы предотвратить кеширование, вы можете добавить параметр, меняющий УРЛ-адрес каждый раз когда делается новый запрос. Чтобы добавить такой параметр, используйте пазлы set URL param и elapsed total:

loaded data
Возвращает данные, полученные с помощью пазлов load data и send data.

read JSON
Интерпретирует текст (или Data URL) как данные в формате JSON и возвращает их в виде словаря.

read CSV
Интерпретирует текст (или ссылку Data URL) как CSV-файл. Возвращает список строк таблицы, причем каждая строка представлена в виде списка значений. Разделитель может быть выбран с помощью выпадающего списка, чтобы соответствовать настройкам экспорта CSV-файла. Значение from row указывает, сколько строк будет пропущено, начиная с верхней.

Доступ к строкам и значениям таблицы осуществляется по их числовым индексам, начиная с 0
.

connector
Этот пазл позволяет соединять другие пазлы между собой, чтобы их было удобнее перемещать, удалять и использовать в других пазлах. Одно из применений — объединение пазлов load sound или load video в одну группу для организации предварительной загрузки медиаресурсов в вашем приложении.

connector (слотовый)
Этот пазл позволяет объединять несколько пазлов между собой, чтобы их было удобнее перемещать, удалять, комментировать и использовать в составе библиотеки.

save state
Сохраняет состояние указанных объектов и/или значения переменных, заданных их именами. Объекты клонируются и сохраняются в памяти. Значения переменных извлекаются и сохраняются в памяти для каждого указанного имени переменной.

Если этот пазл вызывается несколько раз, состояния сохраняются в последовательности, чтобы можно было вернуться к любому предыдущему состоянию с помощью пазла undo state.
undo state
Восстанавливает состояние объектов и/или переменных, сохраненных с помощью пазла save state.

Если этот пазл вызывается несколько раз, состояния восстанавливаются из сохраненной последовательности (если таковая имеется), что позволяет вернуться к любому ранее сохраненному состоянию из стека. В ряде случаев вам может потребоваться узнать момент, когда в очереди восстановления ничего не осталось, в частности, чтобы изменить интерфейс приложения соответствующим образом. В этом случае используйте переменную-счётчик:

all variable names
Возвращает список с именами всех переменных, используемых в пазлах.

variable value by name
Возвращает значение переменной, заданной её именем. Этот пазл работает аналогично стандартному пазлу значение переменной, но не требует выбора переменной из предопределенного выпадающего меню.

JavaScript object
Возвращает заданный «Ява Скрипт»-объект.

С помощью этого пазла можно получить следующие объекты «Ява Скрипт»:
- arguments
-
Возвращает список аргументов текущей выполняемой функции. Может использоваться для получения аргументов процедур пазлов или дополнительных аргументов, передаваемых внутренним обработчикам пазлов.
Например, при использовании пазла when clicked можно получить внутреннее событие «Ява Скрипт», которое запускает логику пазла, используя первый аргумент обработчика, выполняемого за слотом do. В примере ниже мы используем это событие для получения координат X и Y указателя мыши:
Следующие пазлы поддерживают расширенные опции:
- when clicked, when hovered, when dragged — mouse или touch события, которые запускают пазлы в слотах do.
- after, set timer — идентификатор таймера, возвращаемый внутренним вызовом этих пазлов setInterval().
- every frame — разница и общее прошедшее время.
- event — объект события.
- on session event — объект WebXR-события.
- html element
-
Возвращает словарь с DOM-объектом для указанного HTML-элемента. Эта возможность может быть полезна для доступа к свойствам элементов, которые пока не поддерживаются пазлами set property и get property.
- form data
-
Возвращает объект FormData для заданного элемента-формы
<form>
. В частности, используется для отправки пользовательских форм на почту. - this
- Значение
this
«Ява Скрипта». - window
-
Возвращает объект верхнего уровня
window
в виде словаря.
wait promise
Дожидается разрешения или отклонения промиса и возвращает его значение (или причину отклонения) в пазле promise value.

Этот пазл может потребоваться для получения значения пазлов export to gltf и generate normal map. Будучи по своей природе асинхронными, эти пазлы не возвращают значение сразу. Вместо этого они возвращают промисы, которые неявно разрешаются внутри пазлов, на вход которых приходят. В некоторых редких случаях это разрешение не происходит. В этих случаях для разрешения промисов следует использовать wait promise.
promise value
Значение разрешенного промиса (в случае разрешённого промиса) или строка ошибки (в случае отклоненного промиса).
get procedure
Этот пазл используется чтобы получить процедуру, определённую где-то в пазлах. Возвращаемое значение может быть сохранено в переменную или подано в другую процедуру в качестве параметра и вызвано позже с помощью пазла call procedure.

call procedure
Вызывает процедуру, полученную ранее с помощью пазла get procedure. Также может передавать параметры в указанную процедуру. Существует 2 варианта пазла "call procedure" — с и без возвращаемого значения.

add event listener
Добавляет обработчик события указанного типа, то есть данный пазл вызовет процедуру, полученную с помощью пазла get procedure в момент отправки события определённого типа.

remove event listener
Удаляет обработчик события, то есть удаляет процедуру-обработчик событий данного типа.

dispatch event
Отправляет событие указанного типа. Также может передавать параметры в процедуру-обработчик (одни и те же для каждой).

Проблемы с пазлами?
Обращайтесь за помощью на наш форум!