Как получить блочно, чтобы увидеть значение переменной во время выполнения вместо того, что было, когда она была добавлена - PullRequest
1 голос
/ 26 марта 2019

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

Проблема, которая у нас есть, заключается в том, что блочно считывает значения этих переменных, когда переменные добавляются в оператор if (перетаскивается из набора инструментов), а не то, что они есть во время выполнения, что могло быть изменено физическим механизмомgame.

Например:

var code = speed; 

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

Мы пытались создать для них пользовательские интерпретаторы, но похоже, что их цель - просто запустить пользовательские функции, а не возвращать пользовательские.Переменные.

Мы попытались использовать функцию-получатель для переменной и вернуть ее в функцию определения

Blockly.JavaScript['speed'] = function(block) {
    var code = function() {return getSpeed();}
    return [code, Blockly.JavaScript.ORDER_NONE];
};

Она вообще не срабатывает, оператор вообще не вычисляется... или, по крайней мере, это то, на что это похоже

Как мы можем получить блочное чтение значения переменной во время выполнения?

1 Ответ

0 голосов
/ 05 апреля 2019

Если вы хотите увидеть отдельные значения переменных или блоков, вам нужно сначала получить все блоки из рабочей области

Blockly.mainWorkspace.getAllBlocks()

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

var myblocks = Blockly.mainWorkspace.getAllBlocks()
for( var i=0;i<myblocks.length; i++){
  if(myblocks[i].type == 'speed'){
    console.log(myblocks[i].getFieldValue('fieldName'));
  }
}
...