在 Blockly 中,并非所有与类别关联的块都必须在命名的类别文件中找到。这里就是这种情况。
找出要查看的文件和函数的一个好方法是转到Blockly 演示 - 代码编辑器,它允许您将块导出为 XML。将您有兴趣检查生成器源的块拖到工作区中,在这种情况下,它是“变量 -- 更改依据”块,然后导出到 XML:
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="F;)U+)(_^:3!Z~mxvyWO">asd</variable>
</variables>
<block type="math_change" id="xXz{jIXrbvaz9DcE*7O6" x="338" y="88">
<field name="VAR" id="F;)U+)(_^:3!Z~mxvyWO">asd</field>
<value name="DELTA">
<shadow type="math_number" id="d5W].A}ldwUj2~+0PKnj">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</xml>
这表明block type="math_change"
,所以我们按照math_
前缀 toblockly/generators/javascript/math.js
而不是variables.js
:
blockly.javascript['math_change'] = function(block) {
// add to a variable in place.
var argument0 = blockly.javascript.valuetocode(block, 'delta',
blockly.javascript.order_addition) || '0';
var varname = blockly.javascript.variabledb_.getname(
block.getfieldvalue('var'), blockly.variable_category_name);
return varname + ' = (typeof ' + varname + ' == \'number\' ? ' + varname +
' : 0) + ' + argument0 + ';\n';
};
将此函数添加到您的脚本中以覆盖现有实现并将其替换为您所需的逻辑。