Design studio & media solutions

Utilizzo delle funzioni in ActionScript 3.0

AS3 Function
AS3 Function

Che cos’è una funzione?

Le funzioni sono strumenti fondamentali utilizzati in ActionScript per ridurre la quantità di codice scritto, risparmiare tempo, e aggiungere una struttura logica al codice.

Una funzione è un blocco di codice che può essere riutilizzato in qualsiasi momento nel codice. È usato per risparmiare tempo in quanto le mansioni ripetute possono essere scritte una sola volta e poi chiamato più volte. L’uso di funzioni rende anche la lettura del codice più facile da parte del coder.

Funzione Codice di esempio

Nell esempio vogliamo creare un’istanza di un certo oggetto Star, impostarne le proprietà x e y e aggiungerlo all’elenco di visualizzazione. Ecco come fare:

var myStar:Star;

myStar = new Star();
myStar.x = 100;
myStar.y = 150;
addChild(myStar);

Ora, se si desidera creare un altro quadrato utilizzando la stessa variabile, impostarne le proprietà x e y aggiungerlo all’elenco di visualizzazione. Si dovrà ripetere la maggior parte del codice di nuovo:

var myStar:Star;

myStar = new Star();
myStar.x = 100;
myStar.y = 150;
addChild(myStar);

myStar = new Square();
myStar.x = 100;
myStar.y = 150;
addChild(myStar);

Si dovrebbe allora ripetere lo stesso codice più volte ogni volta che si desidera aggiungere unoggetto allo schermo. Questo è un lavoro faticoso e finirebbe nella massiccia creazione di codice ripetitivo. Al fine di evitare la duplicazione dello stesso codice, è possibile creare una funzione. Questa funzione contriene il codice di base necessario e quindi si può riutilizzare più volte:

var myStar:Star;

function makeStar():void {
myStar = new Star();
myStar.x = 100;
myStar.y = 150;
addChild(myStar);
}

makeStar();
makeStar();

Il codice precedente crea due stelle perché la funzione è stata chiamata due volte.

Funzione di base

Ogni funzione può essere scritta utilizzando la sintassi:

function functionName(argument):returnType{
statements;
}

Il primo requisito per la creazione di una funzione è quella di definirne un nome. È sufficiente seguire chiamare il nome della funzione perchè il codice contenuto in essa venga eseguito. Per questo si può utilizzare qualsiasi nome (o quasi, non è in effetti possibile assegnare ad una funzione un nome uguale agli elementi sintattici del linguaggio). Nel nostro caso abbiamo deciso di utilizzare il nome magicalFunction :

function magicalFunction(){
}

Il codice che esegue la funzione deve essere scritto tra le parentesi graffe {} . La nostra funzione deve creare un nuovo MovieClip e impostare le sue proprietà x. e y.

function magicalFunction(){
var myMovie:MovieClip = new MovieClip();
myMovie.x=100;
myMovie.y=150;
}

Il processo per la creazione di una funzione è chiamato definizione di funzione, per poter eseguire il codice interno ad una funzione è necessario richiamarla. Invocare la funzione è un processo a parte che richiede di digitare il nome della funzione seguito da due parentesi:

function magicalFunction(){
var myMovie:MovieClip = new MovieClip();
myMovie.x=100;
myMovie.y=150;
}

magicalFunction();

Questo ultimo comando eseguirà la funzione, è sufficiente digitare magicalFunction ogni volta che si desidera creare new MovieClip e impostare le proprietà x e y rispettivamente a 100 e 150. Si deve sempre ricordare di richiamare la funzione perchè la semplice definizione di essa non produrrà alcuna esecuzione di codice.

Advanced Function Caratteristiche

Potreste aver notato che la nostra funzione in precedenza era un codice generico che conteneva una serie di parametri che non abbiamo usato:

function functionName(argument):returnType{
statements;
}

Il primo di questi è l’ argomento di parametro, questo consente di creare funzioni flessibili che possono essere riutilizzate per svolgere una azione unica ogni volta che viene richiamata la funzione. Un argomento può contenere un riferimento a un oggetto o una variabile che verrà passato quando la funzione viene richiamata in modo che possa essere utilizzato con diversi oggetti o variabili.

Per rendere le cose più chiare, si potrebbe desiderare di creare oggetti Star che vengono creati in una posizione diversa ogni volta che ne viene creato uno nuovo, il nostro codice precedente avrebbe creato stelle identiche nella stessa posizione e quindi sovrapposte.

var myStar:Star;

function makeStar():void {
myStar = new Star();
myStar.x = 100;
myStar.y = 150;
addChild(myStar);
}

makeStar();
makeStar();

Si può passare un argomento alla funzione in modo da specificare le proprietà x e y ogni volta che la funzione viene richiamata specificando i valori tra le parentesi:

var myStar:Star;

function makeStar(myX:Number, myY:Number):void {
myStar = new Star();
myStar.x = myX;
myStar.y = myY;
addChild(myStar);
}

makeStar();
makeStar();

Si dovrebbe notare che la nostra funzione non ha alcun valore reale per le variabili myX e MYY, queste possono essere specificate quando la funzione viene chiamata, e non solo, è possibile specificare valori diversi ogni volta che si richiama la funzione:

var myStar:Star;

function makeStar(myX:Number, myY:Number):void {
myStar = new Star();
myStar.x = myX;
myStar.y = myY;
addChild(myStar);
}

makeStar(100,200);
makeStar(150,320);

Utilizzando il codice di cui sopra, la prima stella sarà posizionata su coordinate 100, 200 mentre la seconda sarà posta a 150, 320. Questo dimostra la potenza e la flessibilità di funzioni.

Oltre a questo, una funzione può essere utilizzata per eseguire un processo e quindi restituire un risultato. Si tratta di una tecnica avanzata, un esempio molto elementare di esso è il seguente:

function calculate(){
var num1:Number = 50;
var num2:Number = 100;
var myResult:Number;

myResult = num1+num2;
return myResult;
}

Questo valore può quindi essere utilizzato in varie situazioni, ad esempio, è ora possibile richiamare questa funzione per definire la proprietà x di un oggetto.

function calculate(){
var num1:Number = 50;
var num2:Number = 100;
var myResult:Number;

myResult = num1+num2;
return myResult;
}

var myMC:MovieClip = new MovieClip();
myMC.x = calculate();

Questo non è un esempio pratico, ma ha il solo scopo di mostrare che una funzione può essere utilizzata per le variabili di processo e restituire quindi un valore di uscita. Ciò che è importante sapere è che si dovrebbe sempre specificare il tipo di valore che la funzione deve restiruire. L’esempio precedente restituisce un numero, così si dovrebbe specificare che il valore di ritorno di questa funzione è un tipo di dati numerici. È necessario specificare questo tipo di dati utilizzando i due punti : e il tipo di dati dopo la parentesi funzione:

function calculate():Number{
var num1:Number = 50;
var num2:Number = 100;
var myResult:Number;

myResult = num1+num2;
return myResult;
}

var myMC:MovieClip = new MovieClip();
myMC.x = calculate();

La maggior parte di tutte le funzioni create non restituirà un valore, così si dovrebbe sempre fare questa precisazione, specificando che il valore di ritorno della funzione è void che significa che non ritorna alcun valore.

var myStar:Star;

function makeStar(myX:Number, myY:Number):void {
myStar = new Star();
myStar.x = myX;
myStar.y = myY;
addChild(myStar);
}

makeStar(100,200);
makeStar(150,320);

Specificando il tipo di dati come vuoto (VOID) quando nessun valore di ritorno è atteso, è buona prassi per i coder AS3.

Commento finale sulle variabili di funzione

È necessario essere consapevoli degli effetti della creazione di una variabile all’interno di una funzione. Utilizzando la parola var all’interno di una funzione porterà alla creazione di una variabile locale che non sarà accessibile al di fuori della funzione. Ad esempio, nel seguente codice, la variabile myResult non sarà accessibile al di fuori della funzione:

function calculate ():Number {

var num1:Number = 50;
var num2:Number = 100;
var myResult:Number;
myResult = num1+num2;

}

Se si tenta di accedere alla myResult variabile al di fuori della funzione, verrà visualizzato un messaggio di errore:

function calculate ():Number {

var num1:Number = 50;
var num2:Number = 100;
var myResult:Number;
myResult = num1+num2;

}

trace(myResult); // THIS WILL GENERATE AN ERROR - MYRESULT DOES NOT EXIST OUTSIDE THE FUNCTION.

Se si desidera che la variabile sia accessibile al di fuori funzione si dovrà definirla fuori dalla stessa e poi semplicemente modificarla all’interno della funzione:

var myResult:Number;

function calculate ():Number {

var num1:Number = 50;
var num2:Number = 100;
myResult = num1+num2;

}

trace(myResult); // THIS WILL NOT GENERATE AN ERROR.

Assicurati quindi di definire tutte le variabili che si desidera riutilizzare all’esterno delle funzioni. In questo modo si definisce una variabile permanente.



+ 6 = thirteen

AS3 Cambiare colore

As3 colors In questo tutorial vedremo come cambiare colore a qualsiesi ...

Variabili, tipi di d

[caption id="attachment_162" align="alignleft" width="300" caption="print screen"][/caption] In questo tutorial analizzeremo gli ...

Impostazione del com

google_maps Le mappe interattive sono i migliori strumenti per illustrare qualsiesi ubicazione geografica. Creare da ...

AS3 Impostare profon

[caption id="attachment_142" align="alignleft" width="300" caption="profondità clip"][/caption] Il metodo setChildIndex Per impostare la ...

AS3 Interagire con l

In questo breve turotial vedremo come utilizzare la tastiera per ...

AS3 Cambiare colore

As3 colors In questo tutorial vedremo come cambiare colore a qualsiesi ...

Variabili, tipi di d

[caption id="attachment_162" align="alignleft" width="300" caption="print screen"][/caption] In questo tutorial analizzeremo gli ...

Impostazione del com

google_maps Le mappe interattive sono i migliori strumenti per illustrare qualsiesi ubicazione geografica. Creare da ...

AS3 Impostare profon

[caption id="attachment_142" align="alignleft" width="300" caption="profondità clip"][/caption] Il metodo setChildIndex Per impostare la ...

AS3 Interagire con l

In questo breve turotial vedremo come utilizzare la tastiera per ...