Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Object Oriented Programming - lezione 2 - le proprietà di una classe Actionscript 3.0

This is a discussion on Object Oriented Programming - lezione 2 - le proprietà di una classe Actionscript 3.0 within the Programmazione Orientata agli Oggetti - tutorials forums, part of the Articoli e tutorials category; Salve a tutti ! Pronti per proseguire con la OOP ? Bene, la volta scorsa abbiamo visto come si crea una classe ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials > Programmazione Orientata agli Oggetti - tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 21-09-07, 16:14
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Object Oriented Programming - lezione 2 - le proprietà di una classe Actionscript 3.0

Salve a tutti !
Pronti per proseguire con la OOP ?

Bene, la volta scorsa abbiamo visto come si crea una classe di Actionscript 3.0 e abbiamo appurato cosa è e che ruolo svolge la funzione costruttrice di una classe.
Le proprietà di una classe ci permettono di immagazzinare o salvare dei valori in quella classe. Non sono altro che variabili Actionscript come le abbiamo sempre viste, solo che all' interno di una classe le variabili vengono chiamate proprietà.
Questi valori salvati possono essere opportunamente richiamati e utilizzati durante lo svolgimento delle nostre porzioni di codice.
Facendo un esempio, immaginiamo di avere una classe che ha il compito di caricare una immagine esterna. Quando l' immagine sarà caricata possiamo risalire alle dimensioni di questa immagine, per cui supponiamo che volessimo registrare i valori delle dimensioni per poterli poi utilizzare in un secondo momento.
Ecco che entrano in gioco le proprietà.
Quindi dichiariamo una proprietà proprio come si dichiara una variabile, solo che all' interno di una classe una proprietà può avere anche degli attributi.
Ogni proprietà di una classe va dichiarata prima della funzione costruttrice, non è un obbligo ma è una buona regola da seguire in modo che la nostra classe sia di più facile lettura e consultazione mentre ci si lavora.

Proseguiamo... Abbiamo visto come definire una funzione costruttrice di una classe: public function NomeClasse() , ora creo un altro file AS che salvo con nome ' Seconda.as ' .
Definita come abbiamo visto fino ad ora, avremmo questa classe:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
        }
    }
}
Creo ora il FLA che verrà associato alla classe Seconda, che salvo con nome ' seconda.fla '.

Anche in questo caso se pubblicassimo l' SWF avremmo il pannello Output di Flash che ci dice: la classe Seconda è stata istanziata correttamente.

Voglio dicharare una proprietà della classe Seconda e lo faccio in questo modo:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
        }
    }
}
notate questa riga: private var antico:Number;

Sì, è proprio così, sto dichiarando una variabile ( proprietà nelle classi ) che si chiama ' antico ' alla classe Seconda.

private è un attributo che dichiara privata questa proprietà e cioè non rende accessibile il suo valore dall' esterno della classe. Ci sono altri 3 attributi possibili che possiamo assegnare ad una proprietà ma per il momento utilizziamo solo private, gli altri li vedremo molto presto.

var dice a Flash di creare una nuova variabile nella sua memoria

antico è il nome che assegno alla proprietà ( potrebbe chiamarsi pinco, pallino, cesare o gatto )

:Number significa che in questa proprietà possono essere inseriti solo ed esclusivamente dei valori di tipo numerico

=10 gli assegno un valore pari a 10

Per recuperare il valore della proprietà antico, basterà richiamarla quando vogliamo, ad esempio:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            trace( antico );
        }
    }
}
in questo caso ho chiesto a Flash, tramite la funzione costruttrice di Seconda, di farmi un trace di antico e l' output generato è il seguente

la classe Seconda è stata istanziata correttamente

10

Un secondo modo di assegnare un valore alla proprietà ' antico ' è quello di farlo nella funzione costruttrice:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            antico=10;
            trace( antico );
        }
    }
}
infatti come possiamo vedere, abbiamo solo dichirato la proprietà antico: private var antico:Number; e poi nella funzione costruttrice gli abbiamo assegnato un valore pari a 10.

In questo modo è più chiaro che, una volta dichiarata la proprietà, possiamo interagire con lei quando vogliamo.

Un altro modo è quello di chiamare o assegnare un valore di una proprietà dall' interno di un metodo ( che vedremo al prossima volta ) oppure attraverso dei getters & setters ( questo lo vedremo decisamente più avanti ).



Ora facciamo un altro esempio per esere sicuri che quello che sto cercando di trasmettere sia chiaro a tuti voi:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            antico+=10;
            trace( antico );
        }
    }
}
ho dichiarato la proprietà assegnandole subito un valore pari a 10: private var antico:Number=10; e nella funzione costruttrice ne ho aumentato il valore di 10, infatti l' output ottenuto è il seguente

la classe Seconda è stata istanziata correttamente

20

Se invece, mettiamo il caso che una volta dichiarata una proprietà ed il suo valore, sappiamo con certezza che non dovremo mai più cambiarlo, allora inece di utilizzare var possiamo utilizzare const e liberare della memoria in più da Flash:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        private const nuovo:Number=30;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            antico+=10;
            trace( antico );
            trace(nuovo);
        }
    }
}
utilizzo const per dire a Flash che quella proprietà avrà sempre un valore costante e non sarà mai cambiato: private const nuovo:Number=30;

Se dovessi provare ad assegnare alla costante ' nuovo ' un altro valore, Flash mi restituirebbe un errore.

Da sottolineare una cosa molto importante:

Flash CS3 attribuisce come proprietà della Document Class qualsiasi oggetto contenuto nello Stage del FLA associato a quella Document Class.

Mi spiego meglio con un esempio:

vado su seconda.fla e creo una MovieClip sullo Stage, gli assegno nome istanza ' clip_mc '.

Chiedo un trace di clip_mc dalla funzione costruttrice di Seconda.as :
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        private const nuovo:Number=30;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            antico+=10;
            trace( antico );
            trace(nuovo);
            trace(clip_mc);
        }
    }
}
ottengo questo output:

la classe Seconda è stata istanziata correttamente

20

30

[object MovieClip]

Flash ha riconosciuto clip_mc che si trova sullo Stage di seconda.fla .

Infatti, possiamo interagire completamente con clip_mc:
Code:
package
{
    import flash.display.MovieClip;
    
    public class Seconda extends MovieClip
    {
        private var antico:Number=10;
        private const nuovo:Number=30;
        
        public function Seconda()
        {
            trace(" la classe Seconda è stata istanziata correttamente ");
            antico+=10;
            trace( antico );
            trace(nuovo);
            trace(clip_mc);
            clip_mc.x=stage.stageWidth/2;
            clip_mc.y=stage.stageHeight/2;
        }
    }
}
ho assegnato dei valori alle proprietà x e y di clip_mc:

clip_mc.x=stage.stageWidth/2;

clip_mc.y=stage.stageHeight/2;

Per approfondire a fondo l' iterattività fra la Timeline e la Document Class, vi consiglio di leggere questo articolo: Comunicazione tra la Timeline e la Document Class

Allego i files:
Attached Files
File Type: zip lezione_2.zip (7.5 KB, 71 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 11:57..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 25-03-08, 11:48
lionwar's Avatar
Junior Member
 
Join Date: Mar 2008
Posts: 18
Rep Power: 0
lionwar is on a distinguished road
Exclamation Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe Act

Ciao a tutti...
e un saluto al talentuoso flep che grazie ai suoi tutorial mi sta aiutando ad entrare nel mondo di Flash e ActionsScript 3.0

Volevo soltanto dire che forse c'e' stato un errore di distrazione nello scrivere il tutorial...
...quando dici di modificare il valore di una variabile all'interno di una funzione costruttrice.

l'esempio da te scritto era cosi:

private var antico:Number;

public function Seconda()
{
trace(' funziona !! la funzione Seconda viene traciata correttamente');
antico+=10;
trace(antico);

ma se ho seguito bene i tuoi tutorial...antico dovrebbe essere scritto cosi.

antico=+10;

Spero di essere stato di aiuto perchè se così fosse...allora vuol dire che ho studiato per bene i tutorial di Flep.
Prima di chiudere vorrei dire che sono quasi estraneo alla programmazione e che sto cominciando ora
( in passato ho programmato qualche stupidata con il DIV game studio ).
Grazie di tutto alla prossima.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 25-03-08, 11:54
lionwar's Avatar
Junior Member
 
Join Date: Mar 2008
Posts: 18
Rep Power: 0
lionwar is on a distinguished road
Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe Act

MI sa che ho sbagliato io...ma come mai si scrive così?

antico+=10; e non
antico=+10;

oppure

antico=antico+10;

??? aiuto :)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 26-03-08, 17:15
alex360off's Avatar
Junior Member
 
Join Date: Mar 2008
Posts: 1
Rep Power: 0
alex360off is on a distinguished road
Re: Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe

Quote:
Originally Posted by lionwar View Post
MI sa che ho sbagliato io...ma come mai si scrive così?

antico+=10; e non
antico=+10;

oppure

antico=antico+10;

??? aiuto :)
Ciao, provo a risponderti io...
scrivere "antico+=10" è la stessa cosa che scrivere "antico = antico + 10". Il += o il -= sono solo forme abbreviate.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 27-03-08, 07:50
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Re: Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe

Quote:
Originally Posted by alex360off View Post
Ciao, provo a risponderti io...
scrivere "antico+=10" è la stessa cosa che scrivere "antico = antico + 10". Il += o il -= sono solo forme abbreviate.
esattamente
__________________

 


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 !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 27-03-08, 12:12
lionwar's Avatar
Junior Member
 
Join Date: Mar 2008
Posts: 18
Rep Power: 0
lionwar is on a distinguished road
Smile Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe Act

capito!!!
Grazie mille !! :)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 16-05-08, 17:06
Junior Member
 
Join Date: May 2008
Posts: 1
Rep Power: 0
Grinch is on a distinguished road
Re: Riferimento: Object Oriented Programming - lezione 2 - le proprietà di una classe

Quote:
Originally Posted by lionwar View Post
MI sa che ho sbagliato io...ma come mai si scrive così?

antico+=10; e non
antico=+10;

oppure

antico=antico+10;

??? aiuto :)
Actionscript è un linguaggio molto simile ad altri che, per loro natura, sono orientati agli oggetti e discendono in modo più o meno diretto dal capostipite il C++, molte delle convenzioni e delle sintassi usate sono simili al C++ (un esempio è dato dal Java e cosi via per altri linguaggi OOP).
L'operatore di autoincremento += è appunto uno dei tanti derivati dal C++ (ed ancora prima dal predecessore, non ad oggetti, ma procedurale, linguaggio C).

Spero di non essere OT, era solo una curiosità...

Grazie a FLEP per lo sforzo e la condivisione di informazioni attuata con questo sito... finalmente mi sto decidendo ad imparare Flash...

Cheers
Grinch
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
Object Oriented Programming - lezione 4 - attributi delle proprietà Flep Programmazione Orientata agli Oggetti - tutorials 1 31-10-08 21:22
Object Oriented Programming - lezione 7 - packages Flep Programmazione Orientata agli Oggetti - tutorials 2 28-10-08 14:12
Object Oriented Programming - lezione 9 - l' Ereditarietà Flep Programmazione Orientata agli Oggetti - tutorials 16 10-10-08 16:36
Object Oriented Programming - lezione 3 - i metodi Flep Programmazione Orientata agli Oggetti - tutorials 1 26-06-08 16:49
Object Oriented Programming - lezione 8 - le costanti Flep Programmazione Orientata agli Oggetti - tutorials 0 21-09-07 17:52


All times are GMT. The time now is 04:12.


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