Movimento Ball con Heading

Ball non è altro che un tipo particolare di Sprite di forma rotonda.. Questa applicazione mostra come muovere il componente Ball. Gli sprite possono essere mossi solo all'interno del componente Canvas.Quando Ball raggiunge un lato del contenitore può essere fatto rimbalzare. Utilizzando pulsanti con direzione ai puntti cardinali è possibile avviare Ball alla velocità (speed) voluta.Con il pulsante di Stop la velocità viene messa a zero e Ball si ferma. La possibilità di far rimbalzare o meno Ball è gestita,con l'evento click, dai blocchi all'interno del pulsante bRimbalzoTrueFalse. Il rimbalzo vero e proprio è amministrato dall'evento di Ball, EdgeReached (Bordo raggiunto), utilizzando il metodo Bounce che rende il rimbalzo di una Ball, come se su una parete (o angolo).
Title = Movimento Ball con Heading Canvas, W=Fill parent, H=300px, Interval=25
Ball, Interval=25, PaintColor Green, Radius=10, Speed=5 x=150,y=140,z=1 HA, Aligno Horizzontal=Center, W=Fill parent
bRimbalzoTrueFalse, Text=Rimbalzo False TA, Columns=3, Row=3
bSud. Image= Sud.png bStop, Text=Stop
bNord, Image= Nord.png bEst. Image= Est.png
bOvest. Image= Ovest.png bNO. Image= NO.png
bNE. Image= NE.png bSO. Image= SO.png
bSE. Image= SE.png lHeading, Text=Heading è :
Procedura che viene chiamata da uno dei pulsanti che possono avviare il movimento di Ball.
Con il blocco Direzione viene passato il valore di Heading, cioè la direzione dei ball.

Pulsanti che avviano il movinenti nelle direzioni prestabilite.
Il blocco call AvviaBall chiama la procedura di avvio AvviaBall passandole il valore di Heading appropriato.
Nella procedura AvviaBall, il valore di Heading viene recuperato nel blocco Direzione
Pulsante di Stop. La palla viene fermata metteno a zero la sua velocità.
Variabile che tiene memoria se il rimbalzo è abilitato o no. All'avvio non è abilitato (false)

Nel pulsante bRimbalzo.Click i blocchi agiscono come un interruttore On/Off.
Ogni volta che viene premuto il pulsante, utilizzando l'operatore logico Not, si invere la condizione del rimbalzo.
nel blocco ifelse viene testata la condizione, falsa Ball (in then-do) viene fermata, se vera viene posto la velocita a 5 e Ball riparte.
Il blocco bRimbalzoTrueFalse è la Label che mostra a video lo stato del rimbalzo, questo le viene assegnato con i blocchi in make text.

Evento EdgeReached (Bordo raggiunto) del componente Ball.
Ogni volta che Ball ragginge un bordo nel blocco edge ritorna il numero corrispondente al bordo raggunto.
In Ball.Bounce vengono fatti i calcoli necessari e Ball viene fatta rimbalzare come se su una parete (o angolo).
Il test per Rimbalzo = true è necessario perché altrimenti Ball rimbalzerebbe Ball sempre quando lanciata dai pulsanti con le frecce.