Мы используем блочно для управления фазерной игрой, и это настроено таким образом, чтобы можно было делать заявления с пользовательскими переменными из игры, например, скоростью или направлением элемента в игре.
Проблема, которая у нас есть, заключается в том, что блочно считывает значения этих переменных, когда переменные добавляются в оператор if (перетаскивается из набора инструментов), а не то, что они есть во время выполнения, что могло быть изменено физическим механизмомgame.
Например:
var code = speed;
Возвращает значение скорости, когда блок был добавлен в стек кода из панели инструментов.Мы хотим, чтобы он возвращал значение скорости, когда код на самом деле выполняется.
Мы пытались создать для них пользовательские интерпретаторы, но похоже, что их цель - просто запустить пользовательские функции, а не возвращать пользовательские.Переменные.
Мы попытались использовать функцию-получатель для переменной и вернуть ее в функцию определения
Blockly.JavaScript['speed'] = function(block) {
var code = function() {return getSpeed();}
return [code, Blockly.JavaScript.ORDER_NONE];
};
Она вообще не срабатывает, оператор вообще не вычисляется... или, по крайней мере, это то, на что это похоже
Как мы можем получить блочное чтение значения переменной во время выполнения?