提供:Japanese Scratch-Wiki
(緑の旗がクリックされたとき (ブロック)から転送)
緑の旗が押されたとき | |
@greenFlag が押されたとき::events hat
| |
カテゴリ | イベント |
タイプ | ハット |
追加 | Scratch 1.0 |
緑の旗が押されたときブロック(イベントブロック/ハットブロック)は、緑の旗が押されたときに、下に組まれたスクリプトを実行するブロックである。このスクリプトから他のスクリプトを開始することで、プログラム全体が実行されていく。
このブロックを使わないでプロジェクトを実行しようとすると、キーが押されたこと、または、スプライト(ステージ)が押されたことを検知する方法が考えられるが、この場合、最初のスクリプトから引き起こされたスクリプトの動作がすべて終わった段階で、プロジェクトが終了する。 このブロックを使わないプロジェクトを作成することは可能だが、推奨されない。緑の旗はプロジェクトの開始を表し、このブロックによってプロジェクトの開始ポイントが判断できるからである。
Scratch 3.0の初期でブロック名が変わった。以前は「緑の旗がクリックされたとき」であった。
使用例
通常、プロジェクトを開始するといろいろな動作が始まるが、これはそれらの動作がこのブロックの下に記述されているからである。このブロックのよくある使用例を次にあげる。
- プロジェクトを開始
- リストの要素をすべて削除する
@greenFlag が押されたとき::events hat [リスト v]のすべてを削除する::list
- 変数をリセット
@greenFlag が押されたとき::events hat [変数 v]を(0)にする
@greenFlag が押されたとき::events hat 隠す コスチュームを (コスチューム1 v) にする
- すべてのペンを消す
@greenFlag が押されたとき::events hat 全部消す::pen
- 音楽を再生する
@greenFlag が押されたとき::events hat ずっと 終わるまで (曲 v) の音を鳴らす end
- クローンを作成する
@greenFlag が押されたとき::events hat (自分自身 v) のクローンを作る
上記のようなブロックを実行した後も、スクリプトは正常に継続される。
@greenFlag が押されたとき::events hat x座標を (0) 、y座標を (0) にする 画像効果をなくす (開始! v)を送る ずっと もし <(メーター) < [0]> なら (あなたの負け v)を送る end end
エラー
1つのプロジェクト内でこのブロックを複数使用していると、プロジェクト実行時に原因が特定しづらいエラーを引き起こすことがある(たとえば、スタートボタンを2回押すたびにエラーが発生する、動作のタイミングがずれるなどの現象が起こる)。 このエラーに対するもっともシンプルな回避策は、「緑の旗が押されたとき」は1つだけ使用して、その中に() を送るブロックを入れて、プロジェクト開始時に実行したいその他のスクリプトは、すべてそのメッセージで実行されるようにするというものだ。その他に、緑の旗を何回か押す、ターボモードで実行するという回避策もある。
@greenFlag が押されたとき::events hat (旗が押された v)を送る
別のブロックでの表現
[タイマー v] > (-1) のとき [Hello world!] と言う
Scratchは、プロジェクトを最初に開いたときすべてのハットブロックを休眠状態にしており、緑の旗が押されたタイミングで、タイマーが0にセットされて、「緑の旗が押されたとき」ブロックが動作を始める。 上記のスクリプトには1つだけ問題がある。プロジェクトの「中を見る」を押したときに、自動的に動作を開始してしまうという点である。 別の方法として以下のようなものがある。
ビデオモーション > (-2) のとき [Hello world!]と言う
これはタイマーを使用するタイプと違って誤作動がないと思われる。
[Scratch-StartClicked v] を受け取ったとき [Hello world!] と言う
Scratch2.0より前のバージョンでは、上記のブロックで代用することができた。
停止ボタンが押されたとき
- 詳細は「停止後にスクリプトを動かす」を参照
多くのユーザーから「停止ボタンが押されたとき」というイベントブロックを導入してほしいとの声が上がっているが、これまでこの要望は、「停止ボタンは、すべてのプロジェクトを停止させるためのものであり、新たなスクリプトの実行用として機能させるつもりはない」という理由で毎回却下されている。
初期のscratch上での動作
初期のscratch(Scratch 13Oct04~Scratch 28Feb05)では、専用のブロックはなく、メッセージのブロックで旗(当時は見た目は旗ではなかったが)が押されたことを受け取っていた。旗が押されたら、先に「setup」が送られ、後に「go」が送られるというものだった。その後Scratch 14Mar05でこのブロックが追加された。そして、このバージョンから旗を押したときに送られるメッセージが「go」から「Scratch-StartClicked」に変更された。