Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;未捕获的TypeError:无法设置属性…”;块状地_Javascript_Jquery_Blockly - Fatal编程技术网

Javascript &引用;未捕获的TypeError:无法设置属性…”;块状地

Javascript &引用;未捕获的TypeError:无法设置属性…”;块状地,javascript,jquery,blockly,Javascript,Jquery,Blockly,我开始在Blockly上编码,但我在尝试创建新块时遇到了一个问题。我采取的步骤是: 分块下载应用程序 我把所有文件都放在一个名为的文件夹中 我在那个文件夹中创建了一个新的html文件,看看工具箱是否工作正常 我使用创建了两个新块 我试图用一个新的customBlocks.js文件将这些新块添加到工具箱中 当我尝试执行第四步时,问题出现了,因为我添加了两个新块,但它只显示在工具箱上,第一个显示在js上,而第二个显示在工具箱上,这与块的顺序无关,只是第二个块永远不会正确显示 这是我的html文件

我开始在Blockly上编码,但我在尝试创建新块时遇到了一个问题。我采取的步骤是:

  • 分块下载
    应用程序
  • 我把所有文件都放在一个名为
    的文件夹中
  • 我在那个文件夹中创建了一个新的html文件,看看工具箱是否工作正常
  • 我使用创建了两个新块
  • 我试图用一个新的
    customBlocks.js
    文件将这些新块添加到工具箱中
当我尝试执行第四步时,问题出现了,因为我添加了两个新块,但它只显示在工具箱上,第一个显示在js上,而第二个显示在工具箱上,这与块的顺序无关,只是第二个块永远不会正确显示

这是我的
html
文件:

<!DOCTYPE html>
<html>
    <head>
        <script src="blockly_compressed.js"></script>
        <script src="blocks_compressed.js"></script>
        <script src="customBlocks.js"></script>
        <script src="msg/js/en.js"></script>
    </head>
    <body>
        <h1>This is a prove </h1>
        <div id = "blocklyMove" style = "height: 100px; width: 100px; background-color: red;"></div>
        <div id="blocklyDiv" style="height: 480px; width: 600px;"></div>

        <xml id="toolbox" style="display: none">
          <block type="controls_if"></block>
          <block type="controls_repeat_ext"></block>
          <block type="logic_compare"></block>
          <block type="math_number"></block>
          <block type="math_arithmetic"></block>
          <block type="text"></block>
          <block type="text_print"></block>
          <block type="move_right"></block>
          <block type="blockObject"></block>
        </xml>

        <script>
          var workspace = Blockly.inject('blocklyDiv',
              {toolbox: document.getElementById('toolbox')});
        </script>
    </body>
</html>
'use strict';

/* *********************** MOVES TO RIGHT *********************** */

Blockly.Blocks['move_right'] = {
  init: function() {
    this.appendValueInput("PIXELS")
        .setCheck("Number")
        .appendField("move to right");
    this.setInputsInline(true);
    this.setOutput(true, null);
    this.setColour(120);
    this.setTooltip('');
    this.setHelpUrl('http://www.example.com/');
  }
};

Blockly.JavaScript['move_right'] = function(block) {
  var value_pixels = Blockly.JavaScript.valueToCode(block, 'PIXELS', Blockly.JavaScript.ORDER_ATOMIC);
  // TODO: Assemble JavaScript into code variable.
  var code = "$(document).ready(function(){ " +
                "$(\"blocklyMove\").animate({ " + 
                    "right: " + value_pixels + "px" +
                "});" +
            "});";
  // TODO: Change ORDER_NONE to the correct strength.
  return [code, Blockly.JavaScript.ORDER_NONE];
};

/* *********************** BLOCK *********************** */

Blockly.Blocks['blockObject'] = {
  init: function() {
    this.appendValueInput("MOVEMENT")
        .setCheck(null)
        .appendField("Block");
    this.setColour(20);
    this.setTooltip('');
    this.setHelpUrl('http://www.example.com/');
  }
};

Blockly.JavaScript['blockObject'] = function(block) {
  var value_movement = Blockly.JavaScript.valueToCode(block, 'MOVEMENT', Blockly.JavaScript.ORDER_ATOMIC);
  // TODO: Assemble JavaScript into code variable.
  var code = '...;\n';
  return code;
};
我可以看到,在
谷歌Chrome
的控制台上,它给了我以下错误:

未捕获的TypeError:无法设置未定义的属性“move_right”

我被困在这里,弄不清楚问题出在哪里。任何帮助都将不胜感激

p.S:不要关注块的逻辑,因为我还没有完成它们,但我希望在完成逻辑之前,两个块都能正确显示。


提前谢谢

最后,我找到了解决办法。在
html
文件中,我必须添加以下
标记,以引用另一个
js
文件(javascript\u compressed.js),其中定义了
Blockly.javascript

<script src="javascript_compressed.js"></script>

我不在乎你是否否决我,但请解释原因。我认为没有解释的否决票对我们任何人都没有帮助。非常感谢。