Scratchにダブルクリックブロックはない?クリックの考え方と安定した作り方

Scratch

Scratchを使っていると、
「スプライトをダブルクリックしたときに動かしたい」
と思うことはありませんか。

パソコンでは当たり前の操作なので、
Scratchでも同じように使える気がしますよね。

結論から言うと、
Scratchには「ダブルクリック」を感知するブロックはありません。

「このスプライトがクリックされたとき」
「マウスが押されたとき」
といったクリックをきっかけにするブロックはありますが、
ダブルクリックを区別する命令は用意されていないのです。

この記事では、

・なぜScratchにダブルクリック用のブロックがないのか
・Scratchにおける「クリックイベント」の考え方
・ダブルクリックっぽい動きを、できるだけ安定して作る方法

を紹介します。

■ Scratchにダブルクリックのブロックがない理由

Scratchは、
子どもや初心者が直感的に使えることを大切にして作られています。

そのため、

・シングルクリック
・ダブルクリック
・長押し

といった細かい操作の違いは、あえて区別していません。

Scratchでは、

・「クリックされたかどうか」
・「キーが押されたかどうか」

といったシンプルな「きっかけ(イベント)」を使って、
動きを組み立てる考え方が基本になっています。

操作を細かく判定するよりも、
「何が起きたら、何をするか」を
分かりやすく考えることを大切にしているのです。

■ Scratchでは「クリック」はきっかけとして考える

Scratchのプログラムでは、

・緑の旗が押されたとき
・このスプライトがクリックされたとき
・スペースキーが押されたとき

などのブロックを使って、
「何が起きたら動くか」を指定します。

「ダブルクリックを感知する」というよりも、
「クリックされたあと、どう動くかを決める」
という考え方になります。

■ ダブルクリックを作ろうとしてハマりやすいポイント

ダブルクリックを再現しようとして、

・クリック回数を数える
・少し待ってから判定する

といった処理を、
「このスプライトがクリックされたとき」の中に
まとめて書きたくなることがあります。

ロジックとしては正しそうに見えますが、
実はここにScratch特有の落とし穴があります。

Scratchの「このスプライトがクリックされたとき」は、
実行中にもう一度クリックされると、
今動いている処理が途中で中断され、
最初からやり直されるという性質があるのです。

そのため、

・1回目のクリックで「待つ」に入る
・2回目のクリックで、1回目の処理が止まる

といったことが起こり、
思った通りに判定できない場合があります。

「考え方は合っているのに、うまく動かない」
と感じたら、Scratchの動き方が原因かもしれません。

■ 安定させるコツ:クリックと判定を分ける

この問題を避けるためには、
「クリックを数える仕事」と
「ダブルクリックかどうか判定する仕事」を
別々のスクリプトに分けるのが一番安定します。

考え方はとてもシンプルです。

・クリックされたら、とにかく回数だけ数える
・別の場所で、少し時間をおいて回数を確認する

Scratchでは、
役割を分けて考えることで、
プログラムが安定しやすくなります。

■ ダブルクリック判定の一例(安定版)

【スクリプト1:クリックを数える】

1:このスプライトがクリックされたとき
2: クリック回数 を 1 ずつ変える

【スクリプト2:ダブルクリックかどうか判定する】

1:緑の旗が押されたとき
2: クリック回数 を 0 にする
3: ずっと
4:  もし クリック回数 > 0 なら
5:   0.3 秒待つ
6:   もし クリック回数 = 2 なら
7:    (ダブルクリック時の処理)
8:   クリック回数 を 0 にする

※ クリック回数の変数は「このスプライトのみ」で作成してください。
※ 待つ秒数は、操作する人に合わせて 0.3〜0.35秒で調整すると安定します。

この方法なら、
スプライトを何回クリックしても
「数える処理」は止まりません。

別で動いている判定用の処理が、
「さて、何回クリックされたかな?」
と落ち着いて確認してくれます。

■ なぜScratchではダブルクリックを使わない方がいいのか

Scratchは、
パソコンだけでなくタブレット(iPadなど)でも
使われることが多いツールです。

タブレットでは、

・ダブルクリックという操作自体が分かりにくい
・子どもにとっては難しい

という場面もあります。

そのためScratchでは、
あえてダブルクリックのような操作を用意せず、

・クリック
・キー操作

といった、どの端末でも分かりやすい操作を
大切にしているのかもしれません。

■ まとめ

・Scratchには「ダブルクリックを感知するブロック」はない
・クリックは「イベント(きっかけ)」として扱う
・ダブルクリックは工夫すれば再現できるが、Scratch特有の注意点がある
・クリックと判定を分けると、より安定して動く
・Scratchではシンプルな操作の方が向いている

「ダブルクリックのブロックが見つからない…」
と感じていた方にとって、
Scratchの仕組みを理解するヒントになれば幸いです。