速習!スクラッチ講座

SCRATCH

ボタン押している間だけ音が鳴る

Scratch3.0でのボタンと音に関連するページはこちら
・ボタンを離すと音が消える

動かすと音鳴らすのキー操作

キャラクターを十字カーソルやキーで動かすスクリプトは、普通はこのように組みます。
キーを長押ししている間は、ずっとキャラクターが動いてくれますね。

同じように、キーボタンを長押ししている間は音を流し、キーボタンを離している間は音を出さないといったスクリプトはどうでしょうか。

動きのスクリプトと同じように作ってみると、

うーん、スペースキーを押しても全然音が鳴ってくれません。
むしろ、指をキーから話すと音が流れる。

不思議な現象です。

データの点と線

この場合は、スクリプトはこういう風に組んでみましょう。

ぱっと見て、まったく逆のことをやっているように見えますが、スペースキーを押すと音が流れました。

なんでこういうことが起きるのでしょうか。

音のデータというのは、10歩動かすこととは違って、目に見えないデータなんですね。
なので、目で見て確認しづらいというのが一つのポイント。

そしてもう一つ。

「音を鳴らす」と「終わるまで音を鳴らす」では、大きな差があるんですね。

音を鳴らすというのは、一瞬一瞬の点みたいなデータ。
終わるまで音を鳴らすというのは、音が終わるまで何もできない線みたいなデータです。

そして、下のスクリプトは、要するに点のデータが繰り返し実行されていて、実際は音がなっているのに、あたかも鳴っていないように見えてしまうのです。

ボタンを離すと音が流れるのは、ボタンを離したことによって、ようやく「スペースキーが押された」というアクションが起きたからなんですね。

真偽を判断する

一方、こちらのスクリプト。

まず緑の旗のスタートボタンを押した時点では、「スペースキーが押された」の「ではない」ので、点のような音データが繰り返し流れるために、音が流れていないように見えます(実際は鳴っています)。

ここでスペースキーを長押ししたとき、「スペースキーが押された」の「ではない」 ことが真か偽かを判断する処理が行われます。

長押ししている間は、ずっとその判断をしようとしています。

判断しようとしている間、さっき実行した点のような音データが無事に実行され、音が流れ出すわけですね。

そしてキーを離すと、「スペースキーが押された」の「ではない」状態になるため、また点のような音データが繰り返し流れるために、音が流れていないように見えると。(実際は鳴っています)。

ちょっとややこしいスクリプトですけれど、「音を鳴らす」と「終わるまで音を鳴らす」では大きな違いがあることに注意しましょう。