微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在谷歌块中验证角度字段和复选框字段? fields.htmlfields.js

如何解决如何在谷歌块中验证角度字段和复选框字段? 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?