Blockly如何为工作空间创建变量(开发人员变量)

时间:2018-03-06 17:27:13

标签: variables github jdeveloper blockly

我想在Blockly中为工作区创建一个Developer Variable,但是我找不到必要的函数/方法。

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

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

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

但是设置功能是什么?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

单元测试块都假设变量 unittestResults 存在并且可以写入。为了表明这一点,块定义包括函数 getDeveloperVars,它返回一个字符串数组。每个字符串都是一个变量名。Follow this issue in 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