Ciao a tutti !
Spero che l' annuncio di questa sezione renda felici molti di voi.
FlepStudio ha solo 4 mesi di vita e durante questo periodo ha notato una forte partecipazione da parte di tantissimi utenti italiani che, volendo migrare da Flash 8 a Flash CS3 e da Actionscript 2.0 a
Actionscript 3.0 hanno preso come punto di riferimento questo sito.
Questa volta la migrazione può sembrare molto più difficile che in passato ( come ad esempio da Flash MX 2004 a Flash 8 ) in quanto
Flash CS3, per svariate ragioni tra cui l' aggiunta di questa ormai famosa Document Class, richiede almeno un conoscenza minima e basilare della Programmazione Orientata agli Oggetti ( definita in inglese come OOP, Object Oriented Pogramming ).
Inoltre, FlepStudio ha notato 2 categorie di utenti che spiccano con percentuale maggiore su tutte:
Chi non ha mai scritto una riga di codice ( a parte comandi del tipo gotoAndPlay, onRelease, ec ecc ) e quindi con l' avvento di Flash CS3 si trova spaesato se non addirittura impaurito di non riuscire a compiere la migrazione
Chi conosce discretamente Actionscript 2.0 ma ha difficoltà nel migrare le proprie logiche dalla timeline alle classi ( files .as ), categoria definita come ' timeline writers ' .
Questa nuova sezione:
sarà totalmente dedicata allo sviluppo sulle Classi ( fiels .as )
partirà dalle primissime basi della OOP fino ad arivare a toccare temi come metodi e proprietà statici, l' Ereditarietà e metodi/proprietà sovrascritti, getters & setters, Polimorfismo e Interfaces
porterà ' a braccetto ' chiunque voglia intraprendere questo cammino, con esempi concreti e pochi blah blah ...
vuole essere un punto di riferimento per tutti gli amanti di Flash che vogliono affinare le proprie tecniche
comprenderà articoli/lezioni teoriche e pratiche
il fine è puramente didattico ed il tema ' io so più di te ' in FlepStudio è decisamente inapropriato, per cui invito chiunque a fare commenti positivi o negativi ma sempre mantenendo viva la concezione di didattica a fini di apprendimento.
sarà completamente GRATUITA, verrà richiesta una evetuale registrazione per chi volesse partecipare al forum che sarà la sede in cui verranno scritti commenti, richieste di aiuto, condivisione di idee, critiche, consigli e tanto altro...
A chi è rivolto il corso OOP:
chiunque abbia delle salde basi di Actionscript 3.0, quindi sappia cosa sia una variabile, un ciclo o un Array
chiunque volesse intreprendere una strada più professionale nello sviluppo di applicazioni Flash utilizzando Actionscript 3.0
Potete accedere agli articoli di questa nuova sezione andano col mouse sul menu principale in alto Tutorials > Object Oriented Programming oppure sulla vostra destra avete un link diretto.
Prima di partire con la prima lezione, FlepStudio vuole ringraziare ancora tutti voi per la vostra calorosa partecipazione e augura un buon proseguimento a tutti.
Object Oriented Programming - lezione 1
Scrivere la mia prima classe e la sua funzione costruttrice
Cosa è una classe...
Vediamola in questo modo: avete presente il famoso gioco di costruzoni LEGO, quei mattocini colorati che messi insieme possono dar vita a delle bellissime costruzioni ?
Ecco, una classe Actionscript 3.0 è un mattoncino Lego.
La si può utilizzare o chiamare ( in gerco di programmazione: istanziare) a nostro piacimento, quando, dove oppure da dove vogliamo.
Una volta istanziata una classe, posso avere a disposizione i suoi metodi e proprietà ( in base agli attributi che ho loro associato ), ma questo lo vedremo nella prossima lezione.
Oggi voglio partire proprio da come si scrive una semplice classe e cosa necessita per essere funzionante.
Con Actionscript 3.0 prima di tutto bisogna implememtare ( creare ) un package. Trovo inutile spiegare a fondo cosa è un package in questa lezione in quanto confonderei solo le idee a chi è al primo approcio con la OOP. Per cui diciamo che un package è una scatola in cui si possono inserire svariate Classi. A questa scatola noi potremmo anche eventualmente assegnare un nome, ma anche questo lo vedremo più avanti.
Seguitemi...
Per il momento implementiamo un package senza nome e accessibile, in questo modo:
creo un file AS che salvo con nome ' Prima.as ' (
NB: consiglio vivamente di dare un nome alla vostra classe che inizia
sempre con lettera maiuscola ) e scrivo:
ora, siccome Flash CS3 ha una struttura di classi suddivisa in pacchetti, in base a quello che dobbiamo fare importeremo il pacchettto di classi adeguato.
In questo caso, utilizzeremo questa classe come Document Class, cioè come la classe principale del nostro progetto o applicazione, per cui necessitiamo di importare la classe MovieClip ( per chi volesse approfondire il concetto di Document Class può leggersi questo articolo:
La Document Class di Flash CS3 ) . Perchè dobbiamo importare la classe MovieClip ? Perchè ci serve per ereditare le sue proprietà ed i suoi metodi ma è un disorso troppo prematuro al momento, per cui vi invito a sapere solo che necessitiamo di importare la classe MovieClip.
Per importare la classe MovieClip, che si trova nel pacchetto ( package ): flash.display, scriviamo:
Code:
package
{
import flash.display.MovieClip;
}
con il comando import, diciamo a Flash di importare qualcosa che quindi sarà a nostra disposizione durante lo sviluppo. Poi gli diciamo che vogliamo la classe MovieClip all' interno del package: flash.display .
Adesso possiamo dichiarare la nostra classe, annunciandola a Flash in questo modo:
Code:
package
{
import flash.display.MovieClip;
public class Prima extends MovieClip
{
}
}
public, significa che la classe è pubblica. Questo attributo rende la classe accessibile anche dall' esterno del pacchetto. Qeusto significa che potrò istanziare la classe Prima.as anche da un' altra classe o dalla TimeLine.
class fa capire a Flash che stiamo definendo una nuova classe
Prima è il nome della classe, quindi il nome del file .as e la dichiarazione della classe devono sempre coincidere
extends è un attributo su cui al momento vi consiglio di non soffermarvi troppo, prendetela come una regola, se la classe che stiamo dichiarando sarà la classe principale del nostro progetto ( quindi Document Class ) deve avere l' attributo extends. Deve estendere e quindi ereditare metodi e proprietà della classe movieClip. Nel corso degli articoli e lezioni capirete meglio il suo valore
MovieClip indica appunto che la nostra classe estende la classe già esistente in Flash che si chiama MovieClip
Adesso dobbiamo definire la funzione costruttrice della nostra classe Prima.
Spiego il concetto di funzione costruttrice:
- è la funzione che esegue il codice al suo interno al momento in cui istanziamo la classe Prima, quindi quando noi istanzieremo Prima dalla TimeLine tramite il campo di testo denominato Document Class ( o Classe Documento per chi ha Flash in versione italana ) nel pannello proprietà del FLA.
- deve avere necessariamente lo stesso nome della classe
- non deve essere chiamata, basta istanziare la classe e Flash automaticamente eseguirà il codice al suo interno
- può essere implementata a ricevere dei parametri ( vedremo nella seconda lezione )
- va sempre definita, se non lo farete, Flash lo farà per voi e quindi non potrete assegnarle del codice da eseguire al momento che viene istanzata la classe. Sarebbe ridicolo non definirla.
- può essere solo pubblica, quindi con attributo public
- non può restituire alcun valore
Ecco come definire la funzione costruttrice di Prima.as :
Code:
package
{
import flash.display.MovieClip;
public class Prima extends MovieClip
{
public function Prima()
{
}
}
}
A questo punto la nostra Classe Prima è pronta per essere utilizzata.
Come la utilizziamo ? ... semplice... !
Creo il FLA principale del nostro progetto, che salvo con nome ' prima.fla ' nella stessa cartella in cui si trova Prima.as .
Nel campo opzione denominato Document Class del pannello proprietà del FLA, scrivo: Prima ( senza estensione .as ) .
Se avessimo voluto istanziare la nostra classe Prima.as da codice, avremo dovuto scrivere:
var prima:Prima=new Prima;
ma è un concetto che elaboreremo più avanti. Per ora lasciamo fare a Flash questo capolavoro scrivendo Prima nell' apposita opzione.
Adesso possiamo facilmente capire a fondo il lavoro della funzione costruttrice ( public function Prima ) tornando su Prima.as, aggiungiamo un trace nella funzione costruttrice in modo da verificare che non appena pubblicheremo l' SWF venga eseguito il trace:
Code:
package
{
import flash.display.MovieClip;
public class Prima extends MovieClip
{
public function Prima()
{
trace(" la classe Prima è stata istanziata correttamente ");
}
}
}
pubblichiamo l' SWF e se avete fatto tutto correttamente, Flash eseguirà subito il codice della funzione costruttrice e vi apparirà il trace nel pannello Output.
Come ben si nota, nessuno ha chiamato la funzione Prima, appunto perchè è la funzione costruttrice e viene eseguito il codice all' interno delle sue parentesi graffe non appena la classe viene istanziata.
Allego i files: