我们正在使用 blockly 来控制移相器游戏,并且设置它以便使用游戏中的自定义变量(例如游戏中元素的速度或方向)进行 if 语句。
我们遇到的问题是,当变量添加到 if 语句(从工具箱中拖出)时,块读取这些变量的值,而不是它们在运行时的值,这可能已被物理引擎更改游戏。
例如:
var code = speed;
这将返回从工具箱将块添加到代码堆栈时的速度值。我们希望它在代码实际运行时返回速度值。
我们尝试为它们创建自定义解释器,但似乎这些解释器的目的只是为了运行自定义函数,而不是返回自定义变量。
我们尝试对变量使用 getter 函数并在定义函数中返回它
Blockly.JavaScript['speed'] = function(block) {
var code = function() {return getSpeed();}
return [code, Blockly.JavaScript.ORDER_NONE];
};
它根本没有触发,声明根本没有评估......或者至少,看起来就是这样
我们如何才能在运行时分块地读取变量的值?