4

我有一个生成一些输出代码的块状应用程序。现在,是否可以编写一些函数来获取我的输出代码并将相应的块放在工作区中。例如,在此页面上,https://developers.google.com/blockly/

连接块以生成 javascript 代码,但是有什么办法,我会给 javascript 代码,块会出现在工作区上。

4

4 回答 4

3

您只能从块中创建 javascript,而不能从 javascript 中创建块。但是,您可以将块导出到 xml,然后将 xml 导入回块。因此,您始终可以将块以 xml 格式保存在任何您希望的位置,并将这些块从 xml 加载回您的块状工作区。

function saveBlocks() {
    var xmlDom = Blockly.Xml.workspaceToDom(Blockly.mainWorkspace);
    var xmlText = Blockly.Xml.domToPrettyText(xmlDom);
    // do whatever you want to this xml
}
function loadBlock(xml) { // xml is the same block xml you stored
    if (typeof xml != "string" || xml.length < 5) {
        return false;
    }
    try {
        var dom = Blockly.Xml.textToDom(xml);
        Blockly.mainWorkspace.clear();
        Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, dom);
        return true;
    } catch (e) {
        return false;
    }
}
于 2020-06-27T01:13:23.957 回答
1

可以做到 - 请参阅https://makecode.microbit.org/。如果您创建一个块然后编辑为 Javascript,您可以编辑并且(如果它是有效代码)然后当您切换回块视图时它将显示正确的块。它生成的 javascript 有点奇怪 - 所以不要指望它将任何 javascript 变成块......

这不是 Blockly 的一部分 - 我不确定这是如何完成的 - 只是它存在 - 希望这会有所帮助。

于 2017-12-11T10:44:42.583 回答
0

我们正在这里开发一个 python 来阻止系统 https://github.com/pi-top/pi-top-blockly/ 它供我们的教育/制造商网站内部使用 此外,但可能有用的位在这里的库 https://github.com/pi-top/pi-top-blockly/tree/main/src/utils/piBlocks 它需要一个 python 字符串并返回 XML 以供 blockly 使用。它使用 skulpt.js 作为 python 编译器前端,然后库从 ast->xml

于 2022-02-24T19:15:08.967 回答
0

我不记得在 blockly 中看到过这个功能,但这绝对是可能的。您必须为您的语言代码编写自定义解析器,然后相应地构建块。

在这个答案中对此进行了一些探索。

基本上,当您解析代码时,您需要以编程方式创建块并将它们附加在一起以在块中创建程序。

于 2019-09-14T13:35:51.090 回答