9
2

More than 3 years have passed since last update.

Google Blocklyのワークスペースに置いたブロックの保存と読み込み

Last updated at Posted at 2019-12-01

Google Blocklyのブロックを保存、読み込み

Google Blocklyを基本として作られた、scratch3.0では「保存、読み込み」ができます。Google Blocklyでも「ワークスペースに置いたブロックの保存、読み込み」ができないか探ってみました。
https://ytakata69.github.io/blockly-processing/
のコードを読んで理解しました。

Google Blocklyのワークスペースに置いたブロックの取得

 var xml = Blockly.Xml.workspaceToDom(workspace);
 var myBlockXml = Blockly.Xml.domToText(xml);

myBlockXml がワークスペースに置いてあるブロックの値になります。
↓値の例

<xml xmlns="https://developers.google.com/blockly/xml">
<block type="block_web_program_start" id="pz]#L40/)?}~AsE3`*6P" x="10" y="10">
<next>
<block type="block_web_text" id="Y,]0_5:qHw7FdY@Ulr9d">
<field name="my_web_text">ここに記入</field>
</block>
</next>
</block>
</xml>

置かれているブロックの種類と座標が、xmlで表記されています。
この myBlockXml の値をファイルに保存してください。

Google Blocklyのブロックをワークスペースに再構築

保存してあるブロックのxmlデータを読み込んで、myBlockXmlに入れます。
ワークスペースを初期化してから、ブロックを再構築します。

  // ブロック再構築
  var xml = Blockly.Xml.textToDom(myBlockXml);
  workspace.clear();
  Blockly.Xml.domToWorkspace(xml, workspace);

ファイル読み込みについては、下記のページを参考にしてください。
https://qiita.com/kerupani129/items/99fd7a768538fcd33420

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2