如何在运行时阻塞查看变量的值,而不是添加它时的值

问题描述 投票:1回答:1

我们正在使用块状来控制移相器游戏,并且这是设置的,以便if语句可以使用来自游戏的自定义变量进行,例如,游戏中元素的速度或方向。

我们得到的问题是,当变量被添加到if语句(从工具箱中拖出)时,块状地读取这些变量的值,而不是它们在运行时的值,这可能是由物理引擎改变的。游戏。

例如:

var code = speed; 

这将返回从工具箱中将块添加到代码堆栈时的速度值。我们希望它在代码实际运行时返回速度值。

我们尝试为它们创建自定义解释器,但它们的目的似乎只是运行自定义函数,而不是返回自定义变量。

我们尝试对变量使用getter函数并在定义函数中返回它

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

它根本不会发射,声明根本没有评估......或者至少,这就是它的样子

我们怎样才能在运行时阻塞读取变量的值?

javascript phaser-framework blockly google-blockly
1个回答
0
投票

如果要查看变量或块的各个值,则需要首先从工作空间获取所有块

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'));
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.