如何从 Scratch 工作区获取代码并用 Blockly 显示?

How to get the code from an Scratch workspace and display with Blockly?

我正在寻找一种方法来从 Scratch-MIT 3.0 中我的工作区中使用的一系列块中获取 XML(或另一个 way/structure),以在 Blockly 中显示此代码Google 的图书馆。

现在我可以访问由 scratch-vm 组件 (https://github.com/LLK/scratch-vm) 生成的抽象语法树,但我看不到 "rebuild" 右侧表示的代码的方法在我的工作区。

Scratch 是从抽象语法树结构中渲染代码还是什么?又如何?

我在 "blocks.jsx" 文件上创建了一个新函数:

onBlockChange() {
    console.log(this.ScratchBlocks.Xml.workspaceToDom(this.workspace));
}

并将新的侦听器附加到 VMListener 列表(也在 "blocks.jsx" 文件中):

this.props.vm.addListener('BLOCK_DRAG_UPDATE', this.onBlockChange);

这样,每次有人添加或删除块时,我都可以从工作区获取 XML 信息。