如何解决如何在谷歌块中验证角度字段和复选框字段? fields.htmlfields.js
我正在使用 blockly javascript 库在我的工作区中制作自定义角度字段和复选框字段块。我只想验证这两个字段,我阅读了文档并添加了验证语法,但仍然无法正常工作。请帮助我out。我在下面提供了源代码。
fields.html
<!DOCTYPE html>
<html>
<head>
<Meta charset="utf-8" name="viewport" content="width=device-width,initial scale=1.0">>
<title>Custom blocks</title>
<script src="https://unpkg.com/blockly/blockly_compressed.js"></script>
<script src="https://unpkg.com/blockly/blocks_compressed.js"></script>
<script src="https://unpkg.com/blockly/javascript_compressed.js"></script>
<script src="https://unpkg.com/blockly/msg/en.js"></script>
<script src="fields.js"></script>
<!-- <script src="onBlock.js"></script>
<link rel="stylesheet" type="text/css" href="onBlock.css"> -->
<style>
body {
background-color: #fff;
font-family: sans-serif;
}
h1 {
font-weight: normal;
font-size: 140%;
}
</style>
</head>
<body>
<button onclick="showCode()">Show JavaScript</button>
<button onclick="runcode()">Run JavaScript</button>
</p>
<div id="blocklyDiv" style="height: 480px; width: 600px;"></div>
<xml xmlns="https://developers.google.com/blockly/xml" id="toolBox" style="display: none">
<category name = "Fields">
<block type = "angle_field">
<field name = "tower">tower</field>
<field name = "building"></field>
</block>
<block type = "checkBox_field">
<field name = "html"></field>
<field name = "css"></field>
<field name = "javascript"></field>
</block>
<block type = "variable">
<field name = "var"></field>
</block>
</category>
<!-- <category name="Logic" colour="%{BKY_LOGIC_HUE}">
<block type="controls_if"></block>
<block type="logic_compare"></block>
<block type="logic_operation"></block>
<block type="logic_negate"></block>
<block type="logic_boolean"></block>
</category> -->
<!-- <category name = "onBlock fields">
<block type="turtle_basic"></block>
<block type="turtle_nullifier" y="120"></block>
<block type="turtle_changer" y="230"></block>
</category>-->
<script>
var demoWorkspace = Blockly.inject('blocklyDiv',{media: 'https://unpkg.com/blockly/media/',toolBox: document.getElementById('toolBox')});
Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),demoWorkspace);
function showCode() {
// Generate JavaScript code and display it.
Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
var code = Blockly.JavaScript.workspacetoCode(demoWorkspace);
alert(code);
}
function runcode() {
// Generate JavaScript code and run it.
window.LoopTrap = 1000;
Blockly.JavaScript.INFINITE_LOOP_TRAP =
'if (--window.LoopTrap == 0) throw "Infinite loop.";\n';
var code = Blockly.JavaScript.workspacetoCode(demoWorkspace);
Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
try {
eval(code);
} catch (e) {
alert(e);
}
}
/*
var options = {
media: 'https://unpkg.com/blockly/media/',grid: {
spacing: 25,length: 3,colour: '#ccc'
},move: {
scrollbars: true,drag: true,wheel: true,},zoom: {
controls: true,startScale: 1.0,maxScale: 4,minScale: 0.25,scaleSpeed: 1.1
}
//toolBox: document.getElementById('toolBox')
} */
</script>
</body>
</html>
fields.js
'use strict';
//block deFinition
Blockly.Blocks['angle_field'] = {
init: function() {
this.appendValueInput("angle")
.setCheck(["String","Number"])
.appendField("angles")
.appendField(new Blockly.FieldAngle(90),"tower")
.appendField(new Blockly.FieldAngle(255),"building");
this.setColour(150);
this.setTooltip("angle field");
this.setHelpUrl("");
}
};
Blockly.Blocks['checkBox_field'] = {
init: function() {
this.appendValueInput("html")
.setCheck("String")
.appendField("html")
.appendField(new Blockly.FieldCheckBox("TRUE"),"html");
this.appendValueInput("css")
.setCheck("String")
.appendField("css")
.appendField(new Blockly.FieldCheckBox("FALSE"),"css");
this.appendValueInput("javascript")
.setCheck("String")
.appendField("javascript")
.appendField(new Blockly.FieldCheckBox("TRUE"),"javascript");
this.setColour(0);
this.setTooltip("checkBox");
this.setHelpUrl("");
}
};
Blockly.Blocks['variable'] = {
init: function() {
this.appendValueInput("var")
.setCheck(null)
.appendField(new Blockly.FieldVariable("height"),"height");
this.setoutput(true,null);
this.setColour(240);
this.setTooltip("variables");
this.setHelpUrl("");
}
};
/*
Blockly.Blocks['turtle_basic'] = {
init: function() {
this.appendDummyinput()
.setAlign(Blockly.ALIGN_CENTRE)
.appendField('simple turtle');
this.appendDummyinput()
.setAlign(Blockly.ALIGN_CENTRE)
.appendField(new CustomFields.FieldTurtle(),'TURTLE');
this.setStyle('example_blocks');
}
};
*/
/*
Blockly.Blocks['validate'] = {
init: function() {
this.appendValueInput("NAME")
.setCheck(null)
.appendField(new Blockly.FieldCheckBox("FALSE"),"NAME");
this.setInputsInline(false);
this.setColour(150);
this.setTooltip("");
this.setHelpUrl("");
}
};
*/
Blockly.JavaScript['angle_field'] = function(block) {
var angle_tower = block.getFieldValue('tower');
var angle_building = block.getFieldValue('building');
var value_angle = Blockly.JavaScript.valuetoCode(block,'angle',Blockly.JavaScript.ORDER_ATOMIC);
// Todo: Assemble JavaScript into code variable.
var code = '...;\n';
return code;
};
Blockly.JavaScript['checkBox_field'] = function(block) {
var checkBox_html = block.getFieldValue('html') == 'TRUE';
var value_html = Blockly.JavaScript.valuetoCode(block,'html',Blockly.JavaScript.ORDER_ATOMIC);
var checkBox_css = block.getFieldValue('css') == 'TRUE';
var value_css = Blockly.JavaScript.valuetoCode(block,'css',Blockly.JavaScript.ORDER_ATOMIC);
var checkBox_javascript = block.getFieldValue('javascript') == 'TRUE';
var value_javascript = Blockly.JavaScript.valuetoCode(block,'javascript',Blockly.JavaScript.ORDER_ATOMIC);
// Todo: Assemble JavaScript into code variable.
var code = '...;\n';
return code;
};
Blockly.JavaScript['variable'] = function(block) {
var variable_height = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('height'),Blockly.Variables.NAME_TYPE);
var value_var = Blockly.JavaScript.valuetoCode(block,'var',Blockly.JavaScript.ORDER_ATOMIC);
// Todo: Assemble JavaScript into code variable.
var code = '...';
// Todo: Change ORDER_NONE to the correct strength.
return [code,Blockly.JavaScript.ORDER_NONE];
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。