0

我想在 Blockly 中为工作区创建一个开发人员变量,但我找不到必要的函数/方法。

我不想在按钮上创建变量。即使工作区中没有块,也应包含该变量。

使用这两个函数,我可以获得已经创建的变量:

var variables = workspace.getAllVariables();
var dev_var = Blockly.Variables.allDeveloperVariables(workspace);

但是设置功能是什么?

4

2 回答 2

1

开发人员变量是用户永远不可见的变量,但会存在于生成的代码中。如果这就是你要找的东西:它没有 API,但这里有一些你可以做的事情。

  • 如果您想保留名称以便用户不会意外覆盖您的变量,请调用yourGenerator.addReservedWords('var1,var2,...'). 您可以在包装代码中初始化变量。
  • 如果您真的希望 Blockly 为您保留和声明变量,您可以覆盖init生成器上的函数。

另一方面,如果您想要的是一个始终显示在工具箱中的用户可见变量,而无需用户创建它,您应该调用yourWorkspace.createVariable('variable_name').

于 2018-03-15T18:33:57.433 回答
0

单元测试块都假设变量 unittestResults 存在并且可以写入。为了表明这一点,块定义包括函数 getDeveloperVars,它返回一个字符串数组。每个字符串都是一个变量名。在 gtihub 中关注这个问题

Blockly.Blocks['unittest_fail'] = {
  // Always assert an error.
  init: function() {
    this.setColour(65);
    this.setPreviousStatement(true);
    this.setNextStatement(true);
    this.appendDummyInput()
        .appendField(new Blockly.FieldTextInput('test name'), 'MESSAGE')
        .appendField('fail');
    this.setTooltip('Records an error.');
  },
  getDeveloperVars: function() {
    return ['unittestResults'];
  }
};

链接:https ://github.com/google/blockly/issues/1535

于 2021-01-06T09:45:19.973 回答