【Scratch入門】Scratchでキーバインド〜キーボードからの操作を覚える
※ 当ページには【広告/PR】を含む場合があります。
2020/06/22
今回はScratchアプリでキーボードからスプライトを操作するための基礎を解説します。
なにかプログラムを作る場合は、ユーザーからのキー入力を適切に受け取りを行い、キーのリクエストに応じた機能を割り当てます。
例として今回は
↑
↓
→
←
条件文の中でキー判定を行う場合
まずはキーバインドにはあまり適さない方法ですが、条件分岐の中でキーを判定して、処理を行うやり方をやってみます。
プログラミングキャンバスの
調べる
スペースキーが押された

今回は、上下左右のキーのどれかを押すたびに、スプライトが移動するようなプログラムに仕立てます。
とりあえず、ずっとループの中に条件分岐させるブロックに、上下左右のキーが押されたときにスプライトが移動するプログラムが以下のようになります。

このプログラムを動かすと以下のようになります。
早速、
🚩
●
このプログラムはまだ未完成です。 たとえば、連続してキーを入力した時に、移動の動作が遅延してしまったり、ごくたまにですがキー入力が無視される場合があります。
というのは、キーバインドのような外部から
イベント
またこのやり方では、プログラムがキーが押されたタイミングを見逃してしまうと、動作が遅れてしまったり、なんにも処理が起こらないままにされてしまったり、予期せぬ不具合が起こるかもしれません。
イベントで処理させる
キーバインドをするには、先程のようにループ処理のなかでキー判定させるより、キーが押された時に発生するイベントとしてプログラム処理をさせるほうがベターです。
今後はプログラミングキャンパスの
イベント
スペースが押されたとき

こちらは先程のやり方と違って、イベント(キーが押された)起こったときに、スクリプトブロックが実行されるようになります。
上のプログラムをイベントで処理するプログラミングに仕立て直します。 プログラミングは以下のようになります。

それでは以下のプログラム画面の上で、十字キーを押してみてください。 イベントが起こればスクリプトが始まりますので、
🚩
●
こちらは遅延を感じずに、スムーズにキー操作を受け付けていると思います。
が、たとえば上キーと右キーの両方のボタンを長押ししてみると、どちらか(上か右か)にしか動かないはずです。 イベントで処理を開始する特性として、2つ以上のイベントがほぼ同時に起こった場合には、早く入力されたどちらかが優先されて、遅く入力されたほうがキャンセルされてしまうようです。
2つ以上のキーを同時に操作したい場合には、次の項目で述べるように、「なにかのキーが押された」イベントを利用すると良いです。
「なにかのキーが押されたとき...」イベントを利用する
機能を割り当てたいキーの数が多くなっていった場合、プログラミングのキャンバスに配置するブロックの数も多くなって、かなり見辛いプログラミングになってしまいます。
そんなときは、キーボードから沢山のキーを利用する予定ならば、
なにかのキーが押されたとき...
再度、プログラミングを変更してみましょう。

修正したプログラムは以下になります。
先程一つ前で説明した、キーごとにイベント処理のブロックを作るやり方と違って、こちらは
同期的
つまりは、同時に2つのキー入力があった場合にも、ひとまとめのイベントとして処理されるため、斜めに動かすことも可能になります。
まとめ
Scratchプログラミングのキーバインドのやり方を解説しました。
十字キーの他にもいろいろなキーが存在しています。
スプライトの移動以外の動作や状態に機能を追加したいときなどにも応用してみてください。