ただし、実際に動かしてみると、いくつか問題があることに気がつくでしょう。それは以下の2点です。
●Canvasの縦幅調整1つは、
Canvasの大きさです。
Fill parentを設定してあるのに、
Canvasはなぜか縦方向には長く変形してくれません。これはどうもバグっぽい気もしますが、とりあえずスクリーンが初期化される際のイベントを使って大きさを設定しておくと良いでしょう。
ブロックエディタで「
MyBlocks」から「
Screen1」をクリックし、現れたブロックから「
Initialize」を画面にドラッグして配置します。そして以下のような形で配置をします。
when [Screen1.Initialize]
do [set Canas1.Height to][Screen1.Height]
わかりますか?
Screen1の
Intializeブロックを配置し、
doのところに
[set Canvas1.Height to]を組み込みます。そしてこのブロックの右側に
[Screen1.Height]のブロックをつなげます。これで
Canvas1の高さが、スクリーンの高さに設定されます。
●Ballのバウンドもう1つの問題は、
Ballが画面の端までくると勝手に止まってしまう、というものです。
Ballなどのスプライトは、画面の端まできたら、それ以上進まないように自動的に停止します。これを何とかするためには、端まで来たら跳ね返るようにしておきます。
Ballには、「
EdgeReached」というイベントが用意されています。これは、画面の端まで来た時に発生するイベントです。
このブロックをブロックエディタに配置してみましょう。ブロックの右端に「
Edge」という小さい部品がくっついた状態で部品が配置されます。この小さい「
Edge」は、どの面の端まで辿り着いたかを示すもので、以下のような値が渡されます。
「1」――画面上端
「-1」――画面の下端
「3」――画面の右端
「-3」――画面の左端
Ballを跳ね返らせるには、「
Bounce」というブロックを使います。ぶつかった方向を示す値をブロックの右側に設定してやると、その反対側に跳ね返らせることができます。
EdgeReachedイベントを使う場合、引数で渡される
Edgeの値をそのまま
Bounceの引数に設定すれば、壁にあたったら反射させることができます。(
Edgeのブロックは、「
My Blocks」の「
My Definitions」内にあります)
下に、3つの
Ballを動かす例を上げておきましょう。図のブロックをよく見て、
EdgeReachedイベントと
Bounceの使い方をよく理解しておきましょう。