如何在运行时块地查看变量的值而不是添加时的值
How to get blockly to see a variable's value at runtime instead of what it was when it was added
我们正在使用 blockly 来控制移相器游戏,这样设置是为了可以使用游戏中的自定义变量来创建 if 语句,例如游戏中元素的速度或方向。
我们遇到的问题是,当变量被添加到 if 语句(从工具箱中拖出)时,块读取这些变量的值,而不是它们在运行时的值,这可能已被更改游戏的物理引擎。
例如:
var code = speed;
这 return 是从工具箱将块添加到代码堆栈时的速度值。我们想让它return的时候速度的值其实是运行.
我们尝试为它们创建自定义解释器,但似乎这些解释器的目的只是为了 运行 自定义函数,而不是为了 returning 自定义变量。
我们尝试对变量使用 getter 函数,并 return 在定义函数中使用
Blockly.JavaScript['speed'] = function(block) {
var code = function() {return getSpeed();}
return [code, Blockly.JavaScript.ORDER_NONE];
};
它根本不触发,语句根本不求值...或者至少,看起来是这样
我们如何在运行时以块状方式读取变量的值?
如果您想查看变量或块的各个值,您需要先从工作区获取所有块
Blockly.mainWorkspace.getAllBlocks()
以上代码将 return 工作区中所有已删除的块,您可以使用循环获取块的名称并过滤您想要获取的数据
var myblocks = Blockly.mainWorkspace.getAllBlocks()
for( var i=0;i<myblocks.length; i++){
if(myblocks[i].type == 'speed'){
console.log(myblocks[i].getFieldValue('fieldName'));
}
}
我们正在使用 blockly 来控制移相器游戏,这样设置是为了可以使用游戏中的自定义变量来创建 if 语句,例如游戏中元素的速度或方向。
我们遇到的问题是,当变量被添加到 if 语句(从工具箱中拖出)时,块读取这些变量的值,而不是它们在运行时的值,这可能已被更改游戏的物理引擎。
例如:
var code = speed;
这 return 是从工具箱将块添加到代码堆栈时的速度值。我们想让它return的时候速度的值其实是运行.
我们尝试为它们创建自定义解释器,但似乎这些解释器的目的只是为了 运行 自定义函数,而不是为了 returning 自定义变量。
我们尝试对变量使用 getter 函数,并 return 在定义函数中使用
Blockly.JavaScript['speed'] = function(block) {
var code = function() {return getSpeed();}
return [code, Blockly.JavaScript.ORDER_NONE];
};
它根本不触发,语句根本不求值...或者至少,看起来是这样
我们如何在运行时以块状方式读取变量的值?
如果您想查看变量或块的各个值,您需要先从工作区获取所有块
Blockly.mainWorkspace.getAllBlocks()
以上代码将 return 工作区中所有已删除的块,您可以使用循环获取块的名称并过滤您想要获取的数据
var myblocks = Blockly.mainWorkspace.getAllBlocks()
for( var i=0;i<myblocks.length; i++){
if(myblocks[i].type == 'speed'){
console.log(myblocks[i].getFieldValue('fieldName'));
}
}