2017-02-16 3 views
0

上のJavaScriptコードを生成するコードを書くことがMoveForwardとMoveBackwardと呼ば内「運動」 2とブロックと呼ばれるブロックの別のカテゴリ。カスタムブロックを作成し、私が欲しいのAndroid

toolbox.xmlブロック型コアライブラリのファイル UIを作成するためのXMLコードを追加しました。

<category name="Movement" colour="190"> 

     <block type="move_forward"> 
      <value name="TEXT"> 
       <shadow type="text"> 
        <field name="TEXT">4</field> 
       </shadow> 
      </value> 
     </block> 

     <block type="move_backward"> 
      <value name="TEXT"> 
       <shadow type="text"> 
        <field name="TEXT">4</field> 
       </shadow> 
      </value> 
     </block> 

</category> 

ここで、これらのブロックを使用して実行するときに出力JavaScriptコードを作成するJavaScriptコードを追加する必要がありますか? 簡単に言えば、これらのブロックでJavaScriptコードを生成するために必要なものは何ですか?

答えて

1

ブロック定義を既に作成していて、これらのブロックがツールボックスUIに表示されていることを前提としています。この場合、コードジェネレータは欠落している部分です。ジェネレータは、すべてのブロックプラットフォームでJavaScriptで定義されています。彼らは、次のようになります。

// From the Android turtle demo. 
// https://github.com/google/blockly-android/blob/master/blocklydemo/src/main/assets/turtle/generators.js 
Blockly.JavaScript['turtle_move_internal'] = function(block) { 
    // Generate JavaScript for moving forward or backwards. 
    var value = block.getFieldValue('VALUE'); 
    return 'Turtle.' + block.getFieldValue('DIR') + 
     '(' + value + ', \'block_id_' + block.id + '\');\n'; 
}; 

Blockly.JavaScriptではJavaScriptジェネレータ関数に(あなたのケースでmove_forwardmove_backward、)ブロックタイプ名のマップです。各ジェネレータ関数はJavaScript Blockオブジェクトで渡されます。これはBlocklyのウェブ版のどこでも使用されているのと同じAPIです。

独自のジェネレータファイルを作成します。 Androidを使用している場合は、これはあなたのassetsフォルダに、AbstractBlocklyActivity.getGeneratorsJsPaths()によって返されたアセットパスの1つに移動する必要があります。

関連する問題