Capita molto spesso, durante
un'animazione, che si debba far prendere al programma o all'utente una decisione
che influenzerà il normale corso dello script. Quindi possiamo
affermare che una decisione condiziona un programma a fare una cosa
piuttosto che un'altra.
Se stiamo a guardare, tutto è frutto di scelte che condizionano un
particolare flusso di avvenimenti (ci mancava il filosofo...). Se ci alziamo
una mattina, sicuri di acchiappare la moto per uscire e appena mettiamo il naso
fuori dalla finestra ci accorgiamo che sta piovendo a catinelle, a meno che non
siamo sciroccati o masochisti sicuramente cambieremo idea e prenderemo macchina
e ombrello.
Ecco, abbiamo appena eseguito quello che in programmazione viene
definita Istruzione Condizionale e cioè abbiamo eseguito un'azione in
base ad una particolare condizione.
Anche Flash può ragionare così (non che si accorga se piove, ma
qualcosina può fare anche lui...).
Di che cosa è composta un'istruzione condizionale ? Nella
normale programmazione di tre parti ben distinte, delle quali due viaggiano
sempre accoppiate, mentre una terza è opzionale e aumenta le possibilità di
esecuzione: IF - THEN - ELSE che in italiano si traducono in SE -
ALLORA - OPPURE e l'esecuzione di questa istruzione porta sempre a due soli
risultati: Vero e Falso.
Naturalmente Flash non poteva essere come gli altri, quindi le
istruzioni diventano If - Else - Else If.
Cominciamo con un esempio base (solo If):
If (inserimento eq "flash" or inserimento
eq "Flash" or inserimento eq "FLASH") Set Variable: "risultato" = "Bravo, hai
scritto quello che ti ho detto" End If
Questo ciclo controlla che la variabile inserimento
contenga la stringa flash oppure Flash oppure FLASH (tre
modi di scrivere la stessa parola). Se la variabile contiene questa stringa
(e quindi la condizione è Vero), allora setta la variabile
risultato con la stringa indicata. In caso contrario (e quindi la
condizione è Falso), non esegue il Set Variable ma salta a End
If dove di seguito potranno essere presenti altri comandi.
Evolvendo un po' le cose si può fare questo esempio (If -
Else):
Qui, il movie è stato istruito ad accettare come buona e cioè come
Vero, la condizione dell'inserimento della parola Flash
all'interno della casella di fianco al pulsante. Nel caso si provi a digitare
un'altra parola, la condizione restituirà Falso e il movie si comporterà
di conseguenza. Il pulsante fa partire questo controllo.
La serie di actions usate sono le seguenti:
On (Release) If (inserimento eq "flash"
or inserimento eq "Flash" or inserimento eq "FLASH") Set Variable:
"risultato" = "Bravo, hai scritto quello che ti ho detto" Else Set
Variable: "risultato" = "Non mi pare che tu abbia scritto quello che ti ho
detto..." End If End On
Tradotto in umane parole, funziona così:
On (Release)
Al rilascio del pulsante.
If (inserimento eq "flash" or
inserimento eq "Flash" or inserimento eq "FLASH")
Se la variabile inserimento contiene la
stringa flash oppure Flash oppure FLASH (e quindi la
condizione è Vero).
Set Variable: "risultato" = "Bravo,
hai scritto quello che ti ho detto"
Allora setta la variabile risultato con questa
stringa (praticamente ci si occupa del THEN senza doverlo scrivere
in maniera visibile, basta inserire l'istruzione subito sotto il comando
If).
Else
Oppure (se la condizione è Falso).
Set Variable: "risultato" = "Non mi
pare che tu abbia scritto quello che ti ho detto..."
Setta la variabile risultato con questa
stringa.
End If
Fine del ciclo di controllo.
End On
Fine del controllo sul pulsante.
Ed ecco un terzo esempio (If - Else - If - Else...)
Qui abbiamo programmato il movie e rispondere in maniera differente per
ognuna delle parole previste e anche per quelle impreviste... :-)
Questo è il codice inserito nel pulsante:
On (Release) If (inserimento eq "sole" or
inserimento eq "Sole" or inserimento eq "SOLE") Set Variable: "risultato" =
"Allora lascio a casa l'ombrello" Else If (inserimento eq "nuvolo" or
inserimento eq "Nuvolo" or inserimento eq "NUVOLO") Set Variable: "risultato"
= "Sarà il caso di prendere l'ombrello ?" Else If (inserimento eq "piove"
or inserimento eq "Piove" or inserimento eq "PIOVE") Set Variable:
"risultato" = "Allora prendo l'ombrello" Else If (inserimento eq "nevica"
or inserimento eq "Nevica" or inserimento eq "NEVICA") Set Variable:
"risultato" = "Andiamo a sciare ?" Else Set Variable: "risultato" = "Come
scusa ? Non ho capito..." End If End If End If End If End On
Come si può notare, ognuna delle risposte ha un ciclo if dedicato
che controlla l'inserimento e decide dove andare. Questa tecnica è detta dei
cicli nidificati, cioè uno dentro l'altro.
A questo punto i puristi della programmazione in Flash potranno
storcere il naso, dato che la stessa cosa si sarebbe potuta realizzare con il
sistema if - else if e cioè:
On (Release) If (inserimento eq "sole"
or inserimento eq "Sole" or inserimento eq "SOLE") Set Variable: "risultato"
= "Allora lascio a casa l'ombrello" Else If (inserimento eq "nuvolo" or
inserimento eq "Nuvolo" or inserimento eq "NUVOLO") Set Variable: "risultato"
= "Sarà il caso di prendere l'ombrello ?" ecc. ecc.
Che cosa cambia ? Un tot di end if in meno al
fondo. Sinceramente non vedo molto la differenza, è tutta una questione di
come ci si trova meglio. Sappiate comunque che funzionano tutti e due.
Ecco fatto. Chiaramente questi sono solo alcuni esempi e il
ciclo if non si limita solo a questo. Avendo la possibilità di gestire un
controllo versatile come questo si possono far cambiare valori a delle
variabili, dirigere un flusso di dati in una direzione piuttosto che in un'altra
oppure far decidere in base ad un range di valori diversi e quindi far reagire
il programma in maniera più "morbida" rispetto al semplice sì o no.