如何在blockly中从代码生成块?

问题描述 投票:0回答:5

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

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

javascript blockly
5个回答
5
投票

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

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;
    }
}

2
投票

我们正在开发一个 python-to-blocks 系统 https://www.npmjs.com/package/@pi-top/blockly 这是一项正在进行的工作,但几乎涉及所有 Python,并且正在构建以与 pi-top 项目网站 https://further.pi-top.com/ 一起使用,但你应该能够提取一些有用的东西,主要代码->块功能位于 src/piBlocks 文件夹。该代码基于此项目https://github.com/blockpy-edu/BlockMirror我主要将其转换为打字稿,重新组织代码并对其进行检查,并进行了一些添加和错误修复。


1
投票

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

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


0
投票

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

这个答案对此进行了一些探讨。

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


-1
投票

[初始化机器人]

  • 设置API密钥:YOUR_API_KEY
  • 设置API秘密:YOUR_API_SECRET

[主循环]

  • [获取市场数据]
    • 交易品种:BTC/USD
    • 时间:1分钟
  • [计算移动平均线]
    • 周期:50
    • 类型:简单移动平均线(SMA)
  • [生成交易信号]
    • 如果 SMA50 突破 SMA200:
      • 设置买入(匹配)信号
    • 否则如果 RSI > 70:
      • 设置卖出(不同)信号
    • 否则如果吞没看涨模式:
      • 设置买入(匹配)信号
    • 否则如果吞没看跌形态:
      • 设置卖出(不同)信号
    • 其他:
      • 无信号
  • [执行交易]
    • 如果买入(匹配)信号:
      • 下市场买单
      • 设置止损和止盈水平
    • 否则如果卖出(不同)信号:
      • 下市场卖单
      • 设置止损和止盈水平
  • 每分钟重复一次
© www.soinside.com 2019 - 2024. All rights reserved.