Как преобразовать в Storyline пустое значение числового ввода в 0 (ноль).
Если у вас хотя бы раз стояла задача разработать в Storyline калькулятор, в рамках которого необходимо посчитать что бы то ни было на основе введённых пользователем значений, то вы наверняка сталкивались с такой проблемой: если пользователь вводит какое-то значение в поле с числовым вводом (Numeric Entry), а потом удаляет его и не вводит в поле ничего, ваш калькулятор ломается, а итоговая переменная принимает значение NaN (not a number — «нечисло»).
Пример такого калькулятора:
При том что в Storyline можно проверять поля для текстового ввода на то, введено в них что-то, или нет, числовые поля так, к сожалению, не проверить.
В такой ситуации нам на помощь придёт JavaScript.
var player = GetPlayer(); var replaceValue; // создаём пустую переменную replaceValue = player.GetVar("a"); // передаём ей значение из Numeric Entry в Storyline (вместо "a" подставьте название переменной, которая принимает значение при вводе в поле для числового ввода) replaceValue = parseInt(replaceValue); // пытаемся преобразовать переменную в число (целочисленное значение), но там видимо undefined, поэтому она становится NaN if (isNaN(replaceValue)) { // если переменная становится NaN replaceValue = 0; // преобразуем её в 0 } player.SetVar("a", replaceValue); // подсовываем значение в Storyline (вместо "a" подставьте название переменной, которая принимает значение при вводе в поле для числового ввода)
Этот код необходимо вставить в триггер Execute JavaScript и повесить либо на кнопку, производящую операции с переменными (до самих операций), либо на поле ввода (после присвоения переменной значения из поля ввода).
Вот пример калькулятора, где при удалении значения в поле ввода калькулятор продолжает работать, а удалённое значение меняется на 0.
Внимание! При предпросмотре вы ничего не увидите кроме ошибки, что JavaScript не работает в режиме Preview. Поэтому вам необходимо опубликовать курс и запустить его в браузере.
Итак, с помощью пары строчек JavaScript мы решили довольно распространённую и неприятную проблему. В комментариях пишите, встречалась ли такая ситуация у вас, и как вы её решили.
Если у вас возникают трудности с реализацией функционала, описанного в этой статье, не стесняйтесь, пишите комментарии.