提供:Japanese Scratch-Wiki

< Scratch 3.0の拡張機能を作ってみよう

このきじは ひらがなでよめません。ごめんなさい。編集者向け:作成する

これまで開発してきた拡張機能は、Scratch 3.0をmodして追加された。しかし、簡単な拡張機能は、modをしなくても追加できる。このページでは、そういった拡張機能の作成方法を記述する。

Web Worker

拡張機能には以下の3種類がある:

  • 基礎の拡張機能: 最初から読み込まれているもの。現時点でなし。
  • 組み込まれた拡張機能: Scratch VMのコードに組み込まれたもの。ペン拡張機能や、他のページで開発したものなど。
  • Web Worker拡張機能: Web Worker上で動作する。このページ上で解説する。

Web Worker上で動作する拡張機能には、以下の特徴がある:

  • ランタイムへのアクセスができない。たとえば、スプライトの属性を指定することなどができない。
  • 他のファイルやライブラリがほとんど読み込めない。
  • 利用できる関数などが限られる。(詳細はMDNを参照。)

Scratchオブジェクト

Web Worker上では、Scratchオブジェクトが利用できる。Scratchオブジェクトには以下を含む:

  • Scratch.ArgumentType - ArgumentType
  • Scratch.BlockType - BlockType
  • Scratch.extensions.register - 拡張機能を登録する関数。Scratch.extensions.register(new Scratch3NewBlocks())のように使う。

書式

拡張機能のファイルの書式は、「基本の書式」とほとんど似ている。以下が修正点である:

  • ArgumentType、BlockTypeは、上のようにScratchオブジェクトから利用する。
  • Cast、logは使用できない。必要な場合は自分で実装する。
  • 27行目のruntime引数は与えられないので、消してよい。その場合は32行目も消す。
  • 最後の行は、Scratch.extensions.register(new Scratch3NewBlocks())に変える。

実行

Web Worker拡張機能を実行する機能は、Scratchをmodしないと利用できない。