提供: Japanese Scratch-Wiki

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

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する

自分の拡張機能はできたかな。以下は応用編だ。

自力でチャレンジ

  • 大文字小文字を区別するイコールの真偽ブロック
  • 累乗

ウェブサイトの情報を取得する

get [URL]という名前の値ブロックをつくってみよう。URLは文字列だ。オペコードは「ajaxRequest」とする。ブロック定義は前のチュートリアルを参考にしてほしいので、ここには書かない。

これには一つライブラリを使用する必要がある。以下を追加する。

5 const nets = require('nets');

では、リクエスト部を書いてみよう。

ajaxRequest (args){
    const ajaxPromise = new Promise(resolve => {
        nets({
            url: Cast.toString(args.URL)
        }, function(err, res, body){
            resolve(body);
           return body;
        });
    });
    ajaxPromise.then(result => result);
    return ajaxPromise;
}

netsは、XMLHttpRequest用のライブラリと思えばいい。また、似たコードが翻訳拡張機能にもある。見てみよう。

現在のミリ秒

現在のミリ秒はnew Date().getMilliseconds()で取得できる。現在のミリ秒を返すブロックを作ってみよう。

() とき

ハットブロックを作ってみよう。ハットブロックの場合は、returnを使って条件式を返すだけでいい。

JSONを読み込む

Scratchには、XMLなどのマークアップ言語/データ記述言語を標準で読み込む機能がない。ここでは、JSONを読み込む機能を作る。「[JSONDATA]を読んで[KEY]を返す」だ。

たとえば、{"hoge":[1, 4, 9], "fuga": "PiYo"}というデータでキーを「fuga」にすると、PiYoが返る。hogeを指定すると、[1, 4, 9]というデータが返る。もう一回個のブロックに通し、キーを数値にすれば、配列の中の参照ができる。下のコードを参考にしてほしい。

parseJSON (args) {
    const j = JSON.parse(Cast.toString(args.JSONDATA));
    const val = j[Cast.toString(args.KEY)];
    if (typeof val == "object") {
        return JSON.stringify(val);
    } else {
        return val;
    }
}