ScratchXの使い方(2)
前回、ScratchXにブロック拡張用のスクリプトを読み込むための準備を行いました。
ScratchXの使い方
今回は拡張用のスクリプトの中身に触れてみたいと思います。
スクリプトはJavaScriptで記述します。スクリプトの大まかな構成は以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
(function(ext) { // shutdown時に実行される。 ext._shutdown = function() {}; // 外部デバイスなどとの接続を行うものは、ここでステータスを返却 ext._getStatus = function() { return {status: 2, msg: 'Ready'}; }; // ブロック実行時の処理内容 ext.command_example = function(callback) { }; // ブロックの形や表示する命令、上で作成した関数との紐付け var descriptor = { blocks: [ [' ', '%s を実行', 'command_example', 'デフォルト表示'], ] }; // ブロックを登録 ScratchExtensions.register('Example Extension', descriptor, ext); })({}); |
ext._shutdownとext._getStatus
特に必要なければ、上記スクリプトのままでOKです。
ブロックの処理内容
ext.xxxxx(任意の名前) = function… で定義します。
何らかの値を返却するものは、function(callback) など、また、引数と返却値を伴うものは、function(str, callback) など。
この部分はまた別途、自分が作成したスクリプトを紹介したいと思いますので、そちらを参照してください。
descriptorで紐付け
自作したext…の関数を、ScratchX上の拡張ブロックとしてどう表現するかと定義します。
上記の、
1 |
[' ', '%s を実行', 'command_example', 'デフォルト表示'], |
に当たる部分ですが、この配列の中身について解説します。
配列の1番目
ブロックの種類(形状)を定義します。
- ‘ ‘(スペース):コマンドブロック(処理の実行を行う四角のブロックです)
- ‘w’:同期コマンドブロック(「待つ」ブロックの様に、実行終了を待ってから後続のブロックを実行するコマンドブロックです)
- ‘r’:レポーターブロック(値を返却する丸いブロックです)
- ‘R’:同期レポーターブロック(上記の「同期〜」と同様です。webサービスから情報を取得するようなものは、apiのコール完了を待つ必要があるのでこれを使いましょう)
- ‘h’:ハットブロック(スクリプトの先頭に配置する、イベントリスナとなるブロックです)
配列の2番目
ブロックに表示される命令文を定義します。
引数を伴う場合、
- %s:文字列
- %n:数字
を命令文中に配置します。
配列の3番目
関数との紐付けを定義します。自作した関数の名称(ext.xxxxxの「xxxxx」の部分)を記載します。
配列の4番目以降(任意)
命令文が引数を伴う場合の、初期表示値を定義します。
複数ある場合は、カンマ区切りで羅列します。
ScratchXの使い方のドキュメントはコチラです。
https://github.com/LLK/scratchx/wiki