Come già molti di voi sapranno, con il termine funzione si indica un blocco di codice (script) utilizzabile in qualsiasi punto ed in qualsiasi momento del, in Flash, filmato. Ad una funzione
vengono passati dei valori, detti argomenti, che vengono operati e, in
alcuni casi, restituiti nel punto del richiamo.
Potremmo costruire una funzione per il controllo di username e password
dell'utente. Alla funzione di controllo vengono inviati i due dati, e di
ritorno avremo una risposta affermativa se i dati sono giusti, negativa se sono
errati.
Flash ha al suo interno alcune funzioni predefinite. Esse sono:
Boolean
escape
eval
false
getProperty
getTimer
getVersion
globalToLocal
hitTest
int
isFinite
isNaN
keycode
localToGlobal
maxscroll
newline
Number
parseFloat
parseInt
random
scroll
String
targetPath
true
unescape
Alcune di queste sono già state viste in precedenza, altre verranno analizzate nel corso di queste lezioni.
Per richiamare una funzione viene usata questa sintassi:
nomefunzione();
È possibile anche richiamare funzioni tramite percorso Target
, come in questo caso:
_root.pippo.nomefunzione();
Una cosa molto importante è sapere che una funzione può essere richiamata solo se la testina di lettura frame ha letto il frame su cui risiede la funzione (perché non inserirle il più possibile nel primo frame? Creeremo script di facile lettura).
Facciamo un semplicissimo esempio:
In questo caso, l'azione del bottone
"imposta" richiama la funzione Imposta()
che esegue queste azioni:
function Imposta(x) {
with (_root.logo)
{
_x = x;
_y = x;
_alpha = x;
}
}
(tramite l'azione function
viene creata la funzione)
Alla funzione viene passato l'argomento x
e tramite questo valore, vengono impostate la posizione x,y e il valore alpha
del movieclip logo.
Come potete notare, ho utilizzato l'azione with
mai vista fino ad ora.
Questa azione, permette di impostare più proprietà riferite ad un
soggetto indicato come argomento dell'azione. In questo caso, indicando _root.logo
come soggetto, tutto quello compreso all'interno delle parentesi graffe, viene eseguito sulla clip _root.logo
.
È facile quindi constatare la velocità di costruzione dell'azione e la
più semplice lettura di essa.
Per ritornare un valore dopo l'esecuzione di una funzione è necessario usare l'azione return
specificando la variabile o l'espressione da
inviare. Ecco un altro semplice esempio:
Qui è stata usata la funzione areaRettangolo(base,altezza)
così composta:
function areaRettangolo(base, altezza) {
area = (base * altezza);
return area;
}
Come potete vedere, la variabile area
viene restituita dopo il calcolo (base*altezza)
. Il richiamo della funzione è questo:
area= areaRettangolo(base, altezza);
Agendo in questa maniera, il risultato della funzione viene inserito all'interno della variabile area
(associata al campo di testo).
Tengo a precisare che tutte le variabili utilizzate all'interno della funzione
(come negli esempi precedenti) sono variabili locali
e quindi hanno
validità solo internamente alla funzione. Una volta terminata perdono
valore (se non "trasmesse" dentro altre variabili come ho fatto nel
secondo esempio). Per modificare variabili globali
è necessario
specificare il percorso Target di esse.
In più, quando una funzione necessita di un tot di argomenti, se questo
tot non viene rispettato (la funzione necessita di 2 argomenti, e ne
viene passato solo 1 al momento del richiamo), Flash assegna ai valori non
inviati il valore undefined
provocando sicuramente errori in fase
di esecuzione. Fate quindi molta attenzione, inserendo un controllo (se è
l'utente che deve digitare i dati da inviare alla funzione) al momento
del richiamo della funzione. Se invece, gli argomenti inviati alla funzione
sono in numero maggiore, allora Flash utilizza solo quelli necessari (se la funzione necessita di 2 argomenti, e ne vengono passati 3, allora Flash utilizza solo i primi 2).