3

谷歌的 Blockly 似乎是一个有趣的工具,可以制作教育软件和游戏,帮助孩子们更好地学习编程。

虽然谷歌有一个同样适用于开发者的文档,但是它很短而且帮助不大(对于新手开发者),而且学习相同的教程也很少。

所以我的问题是,在 Blockly 内部的代码生成器部分中,您可以单击 python/javascript 选项卡以查看您放置的任何块的代码,但如何获取该代码。我的意思是如何执行该代码,例如通过 wifi 发送它使用 websockets 什么的。

任何人都可以帮助我更好地理解这一点!

4

1 回答 1

1

我不是 Blockly 的专家,但也许这会有用。

为了更直接地回答您的问题,您放置在工作区中的块背后有代码,生成器(JavaScrip、PHP ...)使用这些代码来创建您想要的输出代码。通过在 Blockly div 标签之外添加一个按钮来调用生成器例程。有很多方法可以做到这一点,但为了简单起见,假设您有以下内容:

<div id="blocklyDiv">

...后跟一个按钮

<button onclick="run()"> RunMe </button>

然后在脚本中,您需要有一个响应按钮 onclick 事件的函数。

<scrip>

var run = function(){
    Blockly.JavaScript.addReservedWords('code');
    var code = Blockly.JavaScript.workspaceToCode(workspace);

    // now what do you do want to do with code...?
    alert(code);
}

</script>

Blockly 文档充其量是非常薄的......但他们确实建议在 try/catch 代码块中测试生成的代码。这将让您知道您在 Blockly 编辑器中定义的块是否生成了有效或错误的代码。因此,在您获得如上所示的代码后,请尝试使用以下代码代替上面的警报(代码)。

try {
    eval(code);
    // passed the test, now what...
    alert(code);
} catch (e) {
    // failed so show the error
    alert(e);
}

如果 JavaScript eval() 命令没有产生错误,则将执行下一行代码。如果在构建块的方式中发现错误,则会触发错误事件并执行 catch 语句(而不是 eval 命令之后的警报)。然后参数“e”将与 alert(e) 语句一起显示。从那里你将不得不调试你的块并重试。

另一件事,我在上面的示例中使用了 JavaScript 生成器。不确定其他语言如何测试他们的代码,但我认为有类似的方法可以调用 try/catch 环境。

于 2015-09-09T21:18:36.977 回答