Flash Gallery | Flash Templates | Flash Menu | Flash Design | Flash Audio & Video

Video Corsi Actionscript 3.0


+ Reply to Thread
Results 1 to 7 of 7

Thread: Tutorial 4 - le funzioni

  1. #1
    Administrator Living At The FlepStudio! Flep is on a distinguished road
    Join Date
    Jul 2007
    Posts
    5,452
    Rep Power
    8

    Tutorial 4 - le funzioni

    amazing Flash templates
    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

  2. #2
    Member Settled In Donovant is on a distinguished road
    Join Date
    Apr 2008
    Posts
    47
    Rep Power
    0

    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.

  3. #3
    Junior Member Settled In Mika_santoro is on a distinguished road
    Join Date
    Nov 2008
    Posts
    1
    Rep Power
    0

    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

  4. #4
    Junior Member Settled In val85 is on a distinguished road
    Join Date
    Jan 2009
    Posts
    1
    Rep Power
    0

    Re: Tutorial 4 - le funzioni

    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

    SALVE!! VORREI SAPERE PERCHE HAI CAMBIATO IL NOME DELLA FUNZIONE 2 VOLTE NELLA SPIEGAZIONE, MI SONO UN PO CONFUSA... :s

  5. #5
    CSS.FlepStudio.org Moving My Stuff To The FlepStudio Onsitus is on a distinguished road Onsitus's Avatar
    Join Date
    Jul 2007
    Posts
    1,366
    Rep Power
    4

    Re: Tutorial 4 - le funzioni

    Quote Originally Posted by val85 View Post
    SALVE!! VORREI SAPERE PERCHE HAI CAMBIATO IL NOME DELLA FUNZIONE 2 VOLTE NELLA SPIEGAZIONE, MI SONO UN PO CONFUSA... :s
    Ciao, errore di battitura/distrazione sarà. La funzione è assegnaNome e viene richiamata come tale come scritto (correttamente) nel codice.


    Code:
     var fiore:String;
    function assegnaNome():void
    {
        fiore='margherita';
    }
    assegnaNome();
    trace(fiore);
    Last edited by Onsitus; 05-01-09 at 17:51.

  6. #6
    Junior Member Settled In piero80 is on a distinguished road
    Join Date
    Sep 2008
    Posts
    1
    Rep Power
    0

    Re: Tutorial 4 - le funzioni

    Salve Flex! Io vorrei sapere come faccio a rimuovere una funzione in un evento dopo che è stata creata!
    In pratica ho creato una funzione "crealinea", voglio che in un evento del mouse, questa funzione scompaia.Grazie a presto

  7. #7
    Administrator Living At The FlepStudio! Flep is on a distinguished road
    Join Date
    Jul 2007
    Posts
    5,452
    Rep Power
    8

    Re: Tutorial 4 - le funzioni

    Ciao e benvenuto.
    Una funzione non può scomparire.
    La funzione esegue il codice all'interno delle sue parentesi graffe solo se viene chiamata.
    Per cui se non vuoi che venga eseguita basta che non la chiami.

+ Reply to Thread

Similar Threads

  1. addEventListener - pulsanti - funzioni
    By Robertos in forum Flash Italiano
    Replies: 1
    Last Post: 02-12-09, 16:14
  2. classi esterne e funzioni
    By valva in forum FLEX builder 3
    Replies: 0
    Last Post: 24-11-08, 10:03
  3. Problema parametri funzioni
    By Nedyc in forum Actionscript 3.0 base
    Replies: 0
    Last Post: 10-07-08, 10:43
  4. funzioni e passaggio parametri
    By stradiwatt in forum Actionscript 3.0 base
    Replies: 4
    Last Post: 28-03-08, 09:06
  5. Listener e funzioni con parametri
    By Kahran in forum Actionscript 3.0 base
    Replies: 3
    Last Post: 17-03-08, 18:58

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Optimization by vBSEO