Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Tutorial 4 - le funzioni

This is a discussion on Tutorial 4 - le funzioni within the Actioscript 3.0 base - tutorials forums, part of the Articoli e tutorials category; Ciao a tutti ! Eccoci al quarto appuntamento con le basi di Actionscript 3.0 . Dopo aver visto le variabili , i ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials > Actioscript 3.0 base - tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  2 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 23-10-07, 06:48
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Tutorial 4 - le funzioni

Ciao a tutti !

Eccoci al quarto appuntamento con le basi di Actionscript 3.0 .
Dopo aver visto le variabili, i cicli e gli Array, questa volta vorrei introdurre le funzioni.
Le funzioni possono essere estremamente complesse e non è il fine di questo tutorial.
Lo scopo del tutorial è di dare una infarinatura generale a chi è al primo approcio con Actionscript facendo sì da avere le basi necessarie per incrementare le proprie potenzialità.

Vediamo cosa sono, come si dichiarano e a cosa servono le funzioni ...

Le funzioni sono un set istruzioni di codice che vengono eseguite al momento in cui vengono chiamate.
Sono quindi porzioni di codice in forma stand-alone, cioè che possono eseguire il codice senza l' ausilio di altri componenti.
Le funzioni sono composte da:

  • identificatore

  • parametri

  • parametri di restituzione


Possono essere chiamate da diversi punti del nostro script ( o meglio dire della nostra applicazione ) utilizzando l' identificatore e l' operatore parentesi ().

Funzione semplice


Vediamo come definire una semplice funzione
Code:
function flep():void
{
	trace('ok');
}
function - dichiaro a Flash una funzione
flep() - è l' idenficatore della funzione ( in modo da poterla poi chiamare, quindi è come se fosse il nome della funzione ) e le parentesi tonde che al momento non contengono nessun parametro ( li vedremo dopo )
:void - fa sapere a Flash che la funzione non restituisce alcun parametro-valore ( il :void non è obbligatorio ma è consigliato in modo da abituarsi subito all' idea che una funzione può resituire dei valori )
il codice tra le parentesi graffe è il codice che veràà eseguito da Flash al momento in cui la funzione viene chiamata. Infatti se in questo momento pubblico l' SWF, non verrebbe eseguito alcun codice in quanto appunto la funzione non è stata chiamata.

Come chiamare la funzione flep ?
In questo modo:
Code:
function flep():void
{
	trace('ok');
}
flep();
e cioè utilizzando l' identificatore e l' operatore parentesi.
All' interno della funzione c'è un comando e verrà eseguito da Flash. Infatti, pubblicando l' SWF ottengo il seguente output:
ok

Facciamo ora un esempio concreto utilizzando una MovieClip.
Creo una MovieClip di qualsiasi forma e, dopo averla trascinata sullo stage dalla libreria, gli assegno il nome clip_mc.
La posiziono a mano nell' angolo sinistro in alto dello stage.
Ora voglio spostare clip_mc a delle determinate coordinate x e y sullo stage.
Per farlo, mi creo una funzione che chiamo spostaClip in questo modo:
Code:
function spostaClip():void
{
	clip_mc.x=300;
	clip_mc.y=250;
}
e la richiamo in questo modo:
Code:
spostaClip();
A questo punto, pubblico l' SWF e noto che la MovieClip si è sposata alle coordinate descritte nel codice tra le paremtesi graffe della funzione spostaClip.

Altro esempio di funzione semplice:
Code:
var fiore:String;
function assegnaNome():void
{
	fiore='margherita';
}
assegnaNome();
trace(fiore);
Ho creato una variabile di nome fiore e di tipo String.
Ho creato una funzione con nome assegnaNome e tra le sue graffe assegno un valore alla variabile fiore.
Chiaramente se pubblicassi ora l' SWF, la variabile fiore rimarrebbe senza valore in qunto la funzione assegnaValore ( cha appunto assegnerebbe il valore alla variabile fiore ) non è stata chiamata.
Quindi chiamo assegnaFiore() e subito dopo dico a Flash ( tramite il comando trace ) di fari vedere il valore che contiene la variabile fiore. Flash mi dice:
margherita

Funzione che riceve parametri


Come ho detto in precedenza, una funzione Actionscript può ricevere dei parametri.
La ricezione di parametri è fondamentale in quanto la funzione stessa potrebbe eseguire il codice che contiene in base al valore dei parametri che gli sono stati inviati.

Vediamo il primo esempio
Code:
var sezione:int=10;
function moltiplica(n:int):void
{
	sezione=sezione*n;
}
moltiplica(5);
trace(sezione);
Ho creato una variabile con nome sezione, di tipo int ( numero intero ) e gli ho assegnato il valore 10.
Ho creato una funzione che si chiama moltiplica e tra le parentesi tonde gli ho assegnato un parametro che prenderà il nome n e sarà di tipo int.
La funzione moltiplicherà il valore della variabile sezione per il valore che gli passerò come parametro.
Quindi, dicendo sezione=sezione*n; significa: il nuovo valore di sezione è lo stesso valore che contiene sezione, moltiplicato per n.
Chiamo la funzione pasandogli un parametro ( deve essere un valore di tipo int, quindi numero intero, altrimenti Flash ci darebbe un errore ). In questo caso gli passo 5.
Chiedendo a Flash di farmi vedere il nuovo valore di sezione, ottengo il seguente output:
50

Faccio ora un esempio utilizzando la MovieClip che ho sullo stage ( clip_mc ).
creo una funzione che sposterà la MovieClip alle coordinate che gli passerò come parametri.
Code:
function sposta(cx:Number,cy:Number):void
{
	clip_mc.x=cx;
	clip_mc.y=cy;
}
sposta(200,200);
in questo caso ho implementato 2 parametri in ricezione alla funzione sposta e li assegno rispettivamente alla x e alla y di clip_mc.
Infatti pubblicando l' SWF ci accorgiamo che clip_mc si è spostata a tali coordinate.

Funzione che restituisce un valore


Una funzione Actionscript può anche restituire un valore.
Fino ad ora ho utilizzato :void per dire a Flash che la funzione non restituisce alcun valore.
Se cambiassi il :void con ad esempio :Number, significherebbe che tale funzione restituisce un valore di tipo Number.
Vediamo
Code:
var persone:Number;
function raddoppia(n:Number):Number
{
	return n*2;
}
persone=raddoppia(23);
trace(persone);
dichiaro una variabile con nome persone di tipo Number.
Creo la funzione raddoppia che vuole un parametro di tipo Number e restituisce un parametro di tipo Number.
Con l' operatore return, dico a Flash di restituire il valore di n ( che è il valore che la funzione riceve ) moltiplicato per 2.
Assegno direttamente alla variabile persone il valore restituito dalla funzione raddoppia: persone=raddoppia(23);
Infatti eseguo un trace di persone subito dopo ed ottengo il seguente output:
46

In sostanza, dire raddoppia(23); è come dire 46.
Infatti se eseguissi trace(raddoppia(23)); l' output sarebbe appunto 46.

Facciamo un esempio con una MovieClip.
Creo una funzione che ogni qual volta chiamata mi restituisce una MovieClip a forma di cerchio
Code:
function creaClip(raggio:Number):MovieClip
{
	var clip:MovieClip=new MovieClip();
	clip.name='clip';
	clip.graphics.beginFill(0xFF0033,1);
	clip.graphics.drawCircle(300,300,raggio);
	clip.graphics.endFill();
	return clip;
}
addChild(creaClip(50));
Creo una funzione con nome creaClip che vuole un parametro di tipo Number e restituisce una MovieClip.
All' interno della funzione, creo una variabile con nome clip di tipo MovieClip e la istanzio, cioè creo una nuova MovieClip utilizzando l' operatoe new. Assegno un nome alla MovieClip. Faccio disegnare a clip un cerchio che prenderà posizione x 300 e y 300 e con un raggio in base al valore del parametro raggio.
Restituisco clip.

In questo caso si può ben capire che la funzione restituisce una MovieClip fisicamente esistente, infatti dico a Flash di aggiungerla allo stage tramite il metodo addChild in questo modo
addChild(creaClip(50);
Infatti se eseguissi, trace(creaClip(50)); otterrei il seguente output
[object MovieClip]
e se eseguissi trace(creaClip(50).name); otterrei:
clip

File:
Attached Files
File Type: zip tut_4_funzioni.zip (7.2 KB, 106 views)

__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 05-06-08 at 19:08..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 23-04-08, 01:09
Member
 
Join Date: Apr 2008
Posts: 35
Rep Power: 0
Donovant is on a distinguished road
Riferimento: Tutorial 4 - le funzioni

Ciao Flep, sono nuovissimo del forum (sito), i tuoi tutorial sono molto facili da capire, almeno questi base.
Io usavo bene Flash, nella sua 4a edizione, poi diciamo che le cose si sono evolute oltre ad essere cambiate un bel po'.
Ho studiato programmazione all'Uni con Java e C++, ma non è una cosa che mi appassiona molto, ma nemmeno troppo poco.
Volevo chiederti una delle tante cose ^_^', ho creato un array che contiene 10 climovie istanziati attraverso "attachMovie", poi con un for, ho dato una "_x" "_y" e "_rotation" sequenziale, e vorrei che ogniuno dei seguenti mc possa avere un colore "sequenziale", ad esempio dal blu al viola....ho creato un oggetto "Color", ma non ho risolto perchè nel "setRGB" non posso inserire la "i" di iterazione del FOR come numero all'interno del codce esadecimale del metodo sopra scritto per cambiare colore.
Come potrei fare???? (Cercando di non essere troppo longevo nel codice).
Grazie.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 11-11-08, 11:18
Junior Member
 
Join Date: Nov 2008
Posts: 1
Rep Power: 0
Mika_santoro is on a distinguished road
Unhappy Re: Tutorial 4 - le funzioni

Ciao,
io volevo chiederti un gran favorone,
E' da poco che studio Action Script 3 e volevo sapere se potevi pubblicare nel forum una sorta di esercizio (o di più) cosi che potevo esercitarmi, perchè io ho studiato fino adesso gli array, cicli, e via dicendo.. ma non so proprio assemblare il codice non so se mi spiego.. non ho la testa da programmatore e vorrei incomincare a farmela.

Saluti!
Mika
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Actionscript 3 allaccio dinamico tra funzioni e bottoni fr4nc3 Actionscript 3.0 avanzato 1 10-11-08 13:40
Actionscript 3 Modificare funzioni da classe esterna enricoB Actionscript 3.0 base 0 04-11-08 13:18
Actionscript 3 Problema parametri funzioni Nedyc Actionscript 3.0 base 0 10-07-08 10:43
funzioni e passaggio parametri stradiwatt Actionscript 3.0 base 4 28-03-08 09:06
Listener e funzioni con parametri Kahran Actionscript 3.0 base 3 17-03-08 18:58


All times are GMT. The time now is 22:15.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406