Как преобразовать в 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 мы решили довольно распространённую и неприятную проблему. В комментариях пишите, встречалась ли такая ситуация у вас, и как вы её решили.

Если у вас возникают трудности с реализацией функционала, описанного в этой статье, не стесняйтесь, пишите комментарии.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.