提供:Japanese Scratch-Wiki

このきじは ひらがなでよめます。ひらがなでよむ
この記事の正しいタイトルは 緑の旗.svgが押されたとき (ブロック) です。技術的な制限により、ページ名が変えられています。
緑の旗.svgが押されたとき
@greenFlag が押されたとき::events hat
カテゴリ イベント
タイプ ハット
追加 Scratch 1.0

緑の旗.svgが押されたときブロックイベントブロックハットブロック)は、緑の旗が押されたときに、下に組まれたスクリプトを実行するブロックである。このスクリプトから他のスクリプトを開始することで、プログラム全体が実行されていく。

このブロックを使わないでプロジェクトを実行しようとすると、キーが押されたことやスプライト(ステージ)が押されたことなどを検知する方法が考えられるが、この場合、最初のスクリプトから引き起こされたスクリプトの動作がすべて終わった段階で、プロジェクトが終了する。

このブロックを使わないプロジェクトを作成することは可能だが、推奨されない。緑の旗はプロジェクトの開始を表し、このブロックによってプロジェクトの開始ポイントが判断できるからである。

このブロックから始まるスクリプトが実行している間に再び緑の旗.svgがクリックされた場合、最初から実行をやり直す。

Scratch 3.0の初期でブロック名が変わった。以前は「緑の旗がクリックされたとき」であった。

使用例

多くのプロジェクトで、緑の旗.svgをクリックするといろいろな動作が始まるが、これはそれらの動作がこのブロックの下に記述されているからである。このブロックのよくある使用例を次にあげる。

@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つのプロジェクト内でこのブロックを複数使用していると、プロジェクト実行時に原因が特定しづらい不具合を引き起こすことがある(たとえば、緑の旗.svgを2回押すたびにエラーが発生する、動作のタイミングがずれるなど)。

この不具合に対するもっともシンプルな回避策は、「緑の旗.svgが押されたとき」は1つだけ使用して、その下に() を送るブロックを入れ、プロジェクト開始時に実行したい他のスクリプトは、すべてそのメッセージで実行されるようにするというものだ。その他に、緑の旗を何回か押す、ターボモードで実行するという回避策もある。

@greenFlag が押されたとき::events hat
(旗が押された v)を送る

別のブロックでの表現

[タイマー v] > (-1) のとき
[Hello world!] と言う

Scratchは、プロジェクトを最初に開いたときすべてのハットブロックを休眠状態にしており、緑の旗が押されたタイミングで、タイマーが0にセットされて、「緑の旗.svgが押されたとき」ブロックが動作を始める。

上記のスクリプトには1つだけ問題がある。プロジェクトの「中を見る」を押したときに、自動的に動作を開始してしまうという点である。

別の方法として以下のようなものがある。

ビデオモーション > (-2) のとき
[Hello world!]と言う

これはタイマーを使用するタイプと違って誤作動がないと思われる。

[Scratch-StartClicked v] を受け取ったとき
[Hello world!] と言う

Scratch 2.0より前のバージョンでは、上記のブロックで代用することができた。

停止ボタンが押されたとき

分岐.png:この項目は提案を説明しています。停止後にスクリプトを動かす方法については、停止後にスクリプトを動かすをご覧ください。


多くのユーザーから「停止ボタンが押されたとき」というイベントブロックを導入してほしいとの声が上がっているが、これまでこの要望は、「停止ボタンは、すべてのプロジェクトを停止させるためのものであり、新たなスクリプトの実行用として機能させるつもりはない」という理由で毎回却下されている[1]

初期のScratch上での動作

Archive.png この項目には、最新バージョンのScratchには存在しない機能について書かれています。現在は使うことができないので、注意してください。

初期のScratch(Scratch 13Oct04Scratch 28Feb05)では、緑の旗.svgがクリックされたことを感知する専用のブロックはなく、メッセージブロックで緑の旗(当時は見た目は旗ではなかったが)が押されたことを受け取っていた。旗が押されたら、まず「setup」というメッセージが送られ、次いで「go」が送られるというものだった。その後Scratch 14Mar05でこのブロックが追加された。また、同バージョンで、旗を押したときに送られるメッセージが「go」から「Scratch-StartClicked」に変更された。

出典

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。