2019年8月2日

Scratch(スクラッチ)のブロック定義での”画面を再描画せずに実行する”の挙動をテストしてみました。

Scratchには『ブロック定義』という、ある処理のまとまりを一つのブロックとして使うことができる関数のような機能があります。似たような処理のまとまりを何回も書かなければいけないときなどに非常に役立つ機能なのですが、他にも『ブロック定義』には”画面を再描画せずに実行する”というチェック欄があります。そのチェックがあるかないかでの挙動の違いが少し気になりましたので、簡単にではありますがテストしてみました。


こちらは100体の猫をクローンを使って描画してみたプログラムです。

“画面を再描画せずに実行する”にチェックがある場合はパッとすぐに描画されますが、チェックがない場合は1体ずつポツポツと段階的に描画されていくのがわかります。ゲームプログラムみたいにたくさんの敵や弾を一気に描画したいときなどには、チェックがあると処理が非常に高速化されると思います。


こちらはペン機能を使って円グラフのような図形を書いてみたプログラムになります。

こちらも先ほどのプログラム同様に、”画面を再描画せずに実行する”にチェックがある場合は一瞬で描画されているのがわかります。反対にチェックがない場合は、円グラフの図形がどのように描かれていくのかが見てわかると思います。


実際にプログラムを書いてみて挙動の違いを見てみると、ほとんどの場合は”画面を再描画せずに実行する”にチェックがあるブロック定義を使う場面の方が多いと思いますが、例えば「この図形どのように描画されているのだろう?」みたいな処理のプロセスを一つずつ確認していきたい場合には、”画面を再描画せずに実行する”にチェックがないブロック定義を使うのが便利が良いのではないのかと、検証をしてみて感じました。