flash as3 programming

868
PROGRAMMAZIONE IN ACTIONSCRIPT 3.0

Upload: maneki-neko

Post on 01-Dec-2015

205 views

Category:

Documents


3 download

DESCRIPTION

Flash As3 Programming

TRANSCRIPT

  • PROGRAMMAZIONE IN ACTIONSCRIPT 3.0

  • 2007 Adobe Systems Incorporated. Tutti i diritti riservati.

    Programmazione in ActionScript 3.0

    Se la presente guida viene distribuita con software che include un accordo di licenza per lutente finale, la guida e il software in essa descritto sono concessi in licenza e possono essere usati e copiati solo in conformit con i termini di tale licenza. Ad eccezione di quanto eventualmente concesso da tale licenza, nessuna parte di questa guida pu essere riprodotta, memorizzata in un sistema per il recupero dati o trasmessa in qualsiasi forma o con qualsiasi mezzo, elettronico, meccanico, di registrazione o altro, senza il previo consenso scritto da parte di Adobe Systems Incorporated. Il contenuto di questa guida protetto dalle leggi sui diritti dautore, anche se non distribuito con software corredato di accordo di licenza per lutente finale.

    Il contenuto di questa guida viene fornito unicamente a scopo informativo, soggetto a modifiche senza preavviso e non comporta alcun impegno per Adobe Systems Incorporated. Adobe Systems Incorporated declina ogni responsabilit per eventuali errori o imprecisioni presenti in questa guida.

    Se si inseriscono in un progetto grafica e immagini esistenti, si tenga presente che tali materiali potrebbero essere protetti dalla legge sul copyright. Linserimento non autorizzato di tali materiali nel proprio lavoro potrebbe rappresentare una violazione dei diritti del titolare del copyright. Assicurarsi sempre di ottenere le eventuali autorizzazioni necessarie dal titolare dei diritti dautore.

    Tutti i riferimenti a nomi di societ negli esempi forniti hanno scopo puramente dimostrativo e non intendono fare riferimento ad alcuna organizzazione realmente esistente.

    Adobe, il logo Adobe, Flex, Flex Builder e Flash Player sono marchi registrati o marchi commerciali di Adobe Systems Incorporated negli Stati Uniti e/o in altri Paesi.

    ActiveX e Windows sono marchi registrati o marchi commerciali di Microsoft Corporation negli Stati Uniti e in altri Paesi. Macintosh un marchio di Apple Inc., registrato negli Stati Uniti e in altri Paesi. Tutti gli altri marchi appartengono ai rispettivi proprietari.

    Tecnologia per la compressione e la decompressione vocale concessa in licenza da Nellymoser, Inc. (www.nellymoser.com).

    Tecnologia per la compressione e la decompressione video Sorenson Spark, concessa in licenza da Sorenson Media, Inc.

    Browser Opera Copyright 1995-2002 di Opera Software ASA e dei suoi fornitori. Tutti i diritti riservati.

    Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA

    Avviso agli utenti finali di enti governativi degli Stati Uniti dAmerica: il software e la documentazione sono Commercial Items (Prodotti commerciali) secondo la definizione contenuta nellarticolo 48 C.F.R. 2.101, costituiti da Commercial Computer Software (Software commerciale per Computer) e Commercial Computer Software Documentation (Documentazione relativa a software commerciale per Computer) secondo la definizione contenuta nellarticolo 48 C.F.R. 12.212 o 48 C.F.R. 227.7202, secondo i casi. In conformit con larticolo 48 C.F.R. 12.212 o con gli articoli da 48 C.F.R. 227.7202-1 a 227.7202-4 incluso, secondo i casi, i Commercial Computer Software e Commercial Computer Software Documentation vengono concessi in licenza agli utenti appartenenti al Governo degli Stati Uniti dAmerica (a) esclusivamente come Commercial Items e (b) con i soli diritti concessi a tutti gli altri utenti finali ai termini e alle condizioni qui contenuti. Tutti i diritti non pubblicati riservati, ai sensi della legge sul diritto dautore vigente negli Stati Uniti dAmerica. Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. Nei confronti degli utenti finali del Governo degli Stati Uniti, Adobe accetta di rispettare tutte le leggi applicabili sul diritto alle pari opportunit, comprese, ove applicabili, le direttive dellExecutive Order 11246, secondo revisione, la sezione 402 del Vietnam Era Veterans Readjustment Assistance Act del 1974 (38 USC 4212) e la sezione 503 del Rehabilitation Act del 1973, secondo revisione, oltre ai regolamenti esposti in 41 CFR da 60-1 a 60-60, 60-250 e 60-741. La clausola di azione affermativa e i regolamenti sopra elencati saranno incorporati tramite riferimento.

  • 3Indice

    Informazioni sul manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    Uso del manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Accesso alla documentazione di ActionScript . . . . . . . . . . . . . . . . . . . . 17Risorse di apprendimento per ActionScript . . . . . . . . . . . . . . . . . . . . . . . 19

    Capitolo 1: Introduzione ad ActionScript 3.0 . . . . . . . . . . . . . . . . . 21

    Informazioni su ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Vantaggi di ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Novit di ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    Caratteristiche del linguaggio di base . . . . . . . . . . . . . . . . . . . . . . . . . 23Caratteristiche dellAPI di Flash Player . . . . . . . . . . . . . . . . . . . . . . . . 25

    Compatibilit con le versioni precedenti . . . . . . . . . . . . . . . . . . . . . . . . . .27

    Capitolo 2: Guida introduttiva ad ActionScript . . . . . . . . . . . . . . 29

    Nozioni fondamentali sulla programmazione . . . . . . . . . . . . . . . . . . . . . 30Che cosa sono i programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Variabili e costanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Tipi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    Operazioni con gli oggetti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Propriet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    Principi di gestione degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Analisi del processo di gestione degli eventi . . . . . . . . . . . . . . . . . 38Esempi di gestione degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    Creazione di istanze di oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Elementi comuni dei programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Esempio: Porzione del portfolio animazioni . . . . . . . . . . . . . . . . . . . . . . .47Creazione di applicazioni con ActionScript . . . . . . . . . . . . . . . . . . . . . . . 51

    Opzioni per lorganizzazione del codice . . . . . . . . . . . . . . . . . . . . . . . . 51Scelta dello strumento adeguato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Processo di sviluppo ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

  • 4Creazione di classi personalizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Strategie per la progettazione di una classe . . . . . . . . . . . . . . . . . . . . 57Scrittura del codice per una classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Suggerimenti per lorganizzazione delle classi. . . . . . . . . . . . . . . . . . 60

    Esempio: Creazione di unapplicazione di base . . . . . . . . . . . . . . . . . . . 61Esempi successivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    Capitolo 3: Linguaggio e sintassi ActionScript . . . . . . . . . . . . . . . 71

    Panoramica del linguaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Oggetti e classi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Pacchetti e spazi dei nomi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    Pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Spazi dei nomi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    Variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Tipi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    Verifica del tipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Classi dinamiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Descrizione dei tipi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Conversione del tipo di dati. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    Sintassi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116Istruzioni condizionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Ripetizione ciclica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    Concetti di base delle funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Parametri di funzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Funzioni come oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Area di validit delle funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    Capitolo 4: Programmazione orientata agli oggetti con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    Elementi fondamentali della programmazione orientata agli oggetti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Classi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

    Definizioni delle classi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151Attributi delle propriet di classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Enumerazioni con classi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Classi delle risorse incorporate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

    Interfacce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

  • 5Ereditariet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Argomenti avanzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184Esempio: GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194

    Capitolo 5: Operazioni con data e ora. . . . . . . . . . . . . . . . . . . . . 205

    Elementi fondamentali di date e orari. . . . . . . . . . . . . . . . . . . . . . . . . . . 205Gestione di date e orari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Controllo degli intervalli di tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210Esempio: Orologio analogico semplice . . . . . . . . . . . . . . . . . . . . . . . . . .213

    Capitolo 6: Operazioni con le stringhe . . . . . . . . . . . . . . . . . . . . . 217

    Elementi fondamentali delle stringhe. . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Creazione di stringhe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219Propriet length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221Operazioni con i caratteri nelle stringhe . . . . . . . . . . . . . . . . . . . . . . . . .221Confronto tra stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Come ottenere rappresentazioni di altri oggetti sotto forma di stringa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Concatenazione di stringhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Ricerca di sottostringhe e modelli nelle stringhe . . . . . . . . . . . . . . . . . 224Conversione di stringhe da maiuscole a minuscole . . . . . . . . . . . . . . 230Esempio: ASCII Art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    Capitolo 7: Operazioni con gli array. . . . . . . . . . . . . . . . . . . . . . . 239

    Elementi fondamentali degli array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Array con indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Array associativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251Array multidimensionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Clonazione di array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Argomenti avanzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Esempio: PlayList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

    Capitolo 8: Gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . 271

    Elementi fondamentali della gestione degli errori . . . . . . . . . . . . . . . . 272Tipi di errore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Gestione degli errori in ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . 278

    Elementi utilizzati da ActionScript 3.0 per la gestione degli errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278Strategie di gestione degli errori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

    Utilizzo della versione debugger di Flash Player . . . . . . . . . . . . . . . . . 280Gestione degli errori sincroni delle applicazioni. . . . . . . . . . . . . . . . . . .281

  • 6Creazione di classi di errore personalizzate. . . . . . . . . . . . . . . . . . . . . .287Risposte a eventi errore e a errori basati sullo stato . . . . . . . . . . . . . .288Confronto tra le classi di tipo Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292

    Classi Error di base ECMAScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . .292Classi Error di base ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Classi Error del pacchetto flash.error . . . . . . . . . . . . . . . . . . . . . . . . .296

    Esempio: Applicazione CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . .298

    Capitolo 9: Uso delle espressioni regolari . . . . . . . . . . . . . . . . . 305

    Nozioni di base delle espressioni regolari . . . . . . . . . . . . . . . . . . . . . . 306Sintassi delle espressioni regolari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

    Creazione di unistanza di unespressione regolare . . . . . . . . . . . . 310Caratteri, metacaratteri e metasequenze. . . . . . . . . . . . . . . . . . . . . . .311Classi di caratteri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Quantificatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316Alternative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318Gruppi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318Flag e propriet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322

    Metodi di impiego di espressioni regolari con stringhe . . . . . . . . . . . .327Esempio: Un parser Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328

    Capitolo 10: Gestione degli eventi . . . . . . . . . . . . . . . . . . . . . . . . 335

    Nozioni di base sulla gestione degli eventi. . . . . . . . . . . . . . . . . . . . . . .336Novit della gestione degli eventi di ActionScript 3.0 rispetto alle versioni precedenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339Il flusso di eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342Oggetti evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Listener di eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Esempio: Alarm Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

    Capitolo 11: Operazioni con XML . . . . . . . . . . . . . . . . . . . . . . . . . .367

    Nozioni di base su XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368Lapproccio di E4X allelaborazione XML . . . . . . . . . . . . . . . . . . . . . . .372Oggetti XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .374Oggetti XMLList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Inizializzazione delle variabili di XML . . . . . . . . . . . . . . . . . . . . . . . . . . .378Assemblaggio e trasformazione di oggetti XML . . . . . . . . . . . . . . . . 380Lettura delle strutture XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382Uso dello spazio dei nomi XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .387Conversione degli oggetti XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388Lettura di documenti XML esterni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Esempio: Caricamento di dati RSS da Internet . . . . . . . . . . . . . . . . . . 391

  • 7Capitolo 12: Programmazione degli elementi visivi . . . . . . . . . . 395

    Elementi fondamentali della programmazione degli elementi visivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Classi di visualizzazione di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401Vantaggi dellelenco di visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 403Operazioni con gli oggetti di visualizzazione . . . . . . . . . . . . . . . . . . . . 407

    Propriet e metodi della classe DisplayObject . . . . . . . . . . . . . . . . 407Aggiunta di oggetti di visualizzazione allelenco di visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Uso dei contenitori degli oggetti di visualizzazione . . . . . . . . . . . . 408Lettura dellelenco di visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . .413Impostazione delle propriet dello stage . . . . . . . . . . . . . . . . . . . . . .415Gestione degli eventi per gli oggetti di visualizzazione . . . . . . . . . .419Scelta di una sottoclasse DisplayObject . . . . . . . . . . . . . . . . . . . . . .421

    Manipolazione di oggetti di visualizzazione . . . . . . . . . . . . . . . . . . . . . 422Modifica della posizione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422Panoramica e scorrimento di oggetti di visualizzazione . . . . . . . . 429Manipolazione delle dimensioni e modifica in scala degli oggetti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    Controllo della distorsione durante la modifica in scala . . . . . . 432Memorizzazione nella cache di oggetti di visualizzazione . . . . . . 434

    Quando attivare la memorizzazione nella cache . . . . . . . . . . . . 436Attivazione della memorizzazione di bitmap nella cache . . . . . 438Impostazione di un colore di sfondo opaco . . . . . . . . . . . . . . . . . 438

    Applicazione dei metodi di fusione . . . . . . . . . . . . . . . . . . . . . . . . . . 439Regolazione dei colori di un oggetto di visualizzazione . . . . . . . . 440

    Impostazione dei valori di colore con il codice . . . . . . . . . . . . . . .441Modifica di effetti di colore e luminosit con il codice . . . . . . . . 442

    Rotazione degli oggetti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Applicazione della dissolvenza agli oggetti . . . . . . . . . . . . . . . . . . . 443Mascheratura degli oggetti di visualizzazione . . . . . . . . . . . . . . . . . 444

    Animazione di oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447Caricamento dinamico di contenuto di visualizzazione . . . . . . . . . . . 450

    Caricamento di oggetti di visualizzazione. . . . . . . . . . . . . . . . . . . . . 450Monitoraggio dello stato di avanzamento del caricamento . . . . . .451Impostazione del contesto di caricamento. . . . . . . . . . . . . . . . . . . . 452

    Esempio: SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

    Capitolo 13: Operazioni con le funzioni geometriche . . . . . . . . 463

    Nozioni di base sulle funzioni geometriche. . . . . . . . . . . . . . . . . . . . . . 463Uso degli oggetti Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467Uso degli oggetti Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

  • 8Uso degli oggetti Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474Esempio: Applicazione di una trasformazione di matrice a un oggetto di visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .476

    Capitolo 14: Uso dellAPI di disegno . . . . . . . . . . . . . . . . . . . . . . . 481

    Nozioni fondamentali sulluso dellAPI di disegno . . . . . . . . . . . . . . . .482Nozioni fondamentali sulla classe Graphics . . . . . . . . . . . . . . . . . . . . .484Disegno di linee e curve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484Disegno di forme mediante metodi incorporati. . . . . . . . . . . . . . . . . . .488Creazione di linee sfumate e riempimenti con gradiente . . . . . . . . . 489Uso della classe Math con i metodi di disegno . . . . . . . . . . . . . . . . . . 494Animazione mediante lAPI di disegno . . . . . . . . . . . . . . . . . . . . . . . . . 495Esempio: Algorithmic Visual Generator . . . . . . . . . . . . . . . . . . . . . . . . 496

    Capitolo 15: Filtraggio degli oggetti di visualizzazione . . . . . . . . 501

    Elementi fondamentali del filtraggio degli oggetti di visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501Creazione e applicazione di filtri. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

    Creazione di un nuovo filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504Applicazione di un filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504Funzionamento dei filtri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506Problemi potenziali nelle operazioni con i filtri . . . . . . . . . . . . . . . . .507

    Filtri di visualizzazione disponibili. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Filtro smussatura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Filtro sfocatura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511Filtro ombra esterna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Filtro bagliore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Filtro smussatura con gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Filtro bagliore con gradiente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Esempio: Combinazione di filtri di base . . . . . . . . . . . . . . . . . . . . . . . 516Filtro matrice colore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Filtro convoluzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Filtro mappa di spostamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522

    Esempio: Filter Workbench. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .528

    Capitolo 16: Operazioni con i clip filmato . . . . . . . . . . . . . . . . . . 529

    Elementi fondamentali dei clip filmato . . . . . . . . . . . . . . . . . . . . . . . . . 529Operazioni con gli oggetti MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . .532Controllo della riproduzione di clip filmato . . . . . . . . . . . . . . . . . . . . . . .532

    Operazioni con le scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .536Creazione di oggetti MovieClip mediante ActionScript . . . . . . . . . . .536

    Esportazione dei simboli della libreria per ActionScript . . . . . . . . .537

  • 9Caricamento di un file SWF esterno . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Esempio: RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542

    Capitolo 17: Operazioni con il testo . . . . . . . . . . . . . . . . . . . . . . . 547

    Nozioni fondamentali sulle operazioni con il testo . . . . . . . . . . . . . . . 548Visualizzazione del testo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551

    Tipi di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551Modifica del contenuto di un campo di testo . . . . . . . . . . . . . . . . . . 552Visualizzazione del testo HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Uso delle immagini nei campi di testo . . . . . . . . . . . . . . . . . . . . . . . . 553Scorrimento del testo in un campo di testo . . . . . . . . . . . . . . . . . . . 554

    Selezione ed elaborazione del testo . . . . . . . . . . . . . . . . . . . . . . . . . . . 555Rilevamento dellinput di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557Limitazione dellinput di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Formattazione del testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559

    Assegnazione dei formati di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . 559Applicazione dei fogli di stile CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Caricamento di un file CSS esterno. . . . . . . . . . . . . . . . . . . . . . . . . . .561Formattazione di intervalli di testo allinterno di un campo di testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

    Rendering avanzato del testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563Operazioni con il testo statico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566Esempio: Formattazione del testo in stile quotidiano. . . . . . . . . . . . . 568

    Lettura di un file CSS esterno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Disposizione degli elementi dellarticolo sulla pagina . . . . . . . . . . . 571Modifica della dimensione dei caratteri per adattarli alle dimensioni del campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572Distribuzione del testo su pi colonne. . . . . . . . . . . . . . . . . . . . . . . . 574

    Capitolo 18: Operazioni con le bitmap. . . . . . . . . . . . . . . . . . . . . 577

    Nozioni fondamentali sulle operazioni con le bitmap . . . . . . . . . . . . . 577Le classi Bitmap e BitmapData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .581Manipolazione dei pixel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

    Manipolazione dei singoli pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583Rilevamento di collisioni a livello di pixel. . . . . . . . . . . . . . . . . . . . . . 585

    Copia dei dati bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587Creazione di texture mediante le funzioni di disturbo. . . . . . . . . . . . . 588Scorrimento delle bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .591Esempio: Animazione di sprite mediante una bitmap fuori schermo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

  • 10

    Capitolo 19: Operazioni con i file video . . . . . . . . . . . . . . . . . . . . 593

    Elementi fondamentali del video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594Nozioni fondamentali sul formato Flash Video (FLV) . . . . . . . . . . . . .597Nozioni fondamentali sulla classe Video . . . . . . . . . . . . . . . . . . . . . . . .598Caricamento di file video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599Controllo della riproduzione video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

    Rilevamento della fine di un flusso video . . . . . . . . . . . . . . . . . . . . . . 601Streaming di file video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602Nozioni fondamentali sui cue point . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603Scrittura di metodi di callback per onCuePoint e onMetaData . . . . 604

    Impostare la propriet client delloggetto su un oggetto . . . . . . . 605Creare una classe personalizzata e definire i metodi per gestire i metodi di callback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606Estendere la classe NetStream e aggiungere i metodi per gestire i metodi di callback. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607Estendere la classe NetStream e renderla dinamica . . . . . . . . . . 608Impostare la propriet client delloggetto NetStream su questo valore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

    Uso dei cue point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610Uso di metadati video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .611Rilevamento dellinput da videocamera . . . . . . . . . . . . . . . . . . . . . . . . . 615

    Nozioni fondamentali sulla classe Camera . . . . . . . . . . . . . . . . . . . . 615Visualizzazione sullo schermo del contenuto della videocamera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616Progettazione di unapplicazione per la videocamera . . . . . . . . . . 616Collegamento alla videocamera di un utente . . . . . . . . . . . . . . . . . . 617Verifica dellinstallazione delle videocamere. . . . . . . . . . . . . . . . . . . 617Rilevamento delle autorizzazioni per laccesso alla videocamera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618Ottimizzazione della qualit video. . . . . . . . . . . . . . . . . . . . . . . . . . . 620Monitoraggio delle condizioni di riproduzione . . . . . . . . . . . . . . . . .622Invio del video a un server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .623

    Argomenti avanzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .623Compatibilit di Flash Player con i file FLV codificati . . . . . . . . . . .623Informazioni sulla configurazione di file FLV per lhosting su un server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .624Informazioni sullindirizzamento di file FLV locali in Macintosh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .625

    Esempio: Video Jukebox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .625

  • 11

    Capitolo 20: Operazioni con laudio . . . . . . . . . . . . . . . . . . . . . . 633

    Nozioni fondamentali sulle operazioni con laudio . . . . . . . . . . . . . . . 634Nozioni fondamentali sullarchitettura audio . . . . . . . . . . . . . . . . . . . . 637Caricamento di file audio esterni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639Operazioni con laudio incorporato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642Operazioni con laudio in streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644Riproduzione dellaudio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

    Sospensione e ripresa della riproduzione dellaudio . . . . . . . . . . . 646Monitoraggio della riproduzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646Interruzione dellaudio in streaming . . . . . . . . . . . . . . . . . . . . . . . . . . 649

    Considerazioni sulla sicurezza durante il caricamento e la riproduzione dellaudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649Controllo del volume e della panoramica dellaudio . . . . . . . . . . . . . . 650Operazioni con i metadati audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Accesso ai dati audio originari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Rilevamento dellinput audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

    Accesso a un microfono. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658Instradamento dellaudio del microfono agli altoparlanti locali . . 659Modifica dellaudio del microfono . . . . . . . . . . . . . . . . . . . . . . . . . . . 660Rilevamento dellattivit del microfono . . . . . . . . . . . . . . . . . . . . . . . 660Invio di audio verso e da un server multimediale . . . . . . . . . . . . . . . 662

    Esempio: Podcast Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662Lettura dei dati RSS per un canale podcast . . . . . . . . . . . . . . . . . . 664Semplificazione del caricamento e della riproduzione dellaudio mediante la classe SoundFacade . . . . . . . . . . . . . . . . . . 664Visualizzazione dellavanzamento della riproduzione . . . . . . . . . . 668Sospensione e ripresa della riproduzione. . . . . . . . . . . . . . . . . . . . . 669Estensione dellesempio Podcast Player . . . . . . . . . . . . . . . . . . . . . 670

    Capitolo 21: Rilevamento dellinput dellutente . . . . . . . . . . . . . . 671

    Elementi fondamentali dellinput dellutente. . . . . . . . . . . . . . . . . . . . . . 671Rilevamento dellinput da tastiera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674Rilevamento dellinput da mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Esempio: WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682

    Capitolo 22: Connettivit di rete e comunicazioni. . . . . . . . . . . 687

    Nozioni fondamentali sulla connettivit di rete e le comunicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687Operazioni con i dati esterni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .691Connessione ad altre istanze di Flash Player . . . . . . . . . . . . . . . . . . . . 698Connessioni socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Memorizzazione di dati locali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711

  • 12

    Operazioni di caricamento e scaricamento dei file. . . . . . . . . . . . . . . . 715Esempio: Creazione di un client Telnet. . . . . . . . . . . . . . . . . . . . . . . . . .726Esempio: Caricamento e scaricamento di file . . . . . . . . . . . . . . . . . . . .730

    Capitolo 23: Ambiente del sistema client . . . . . . . . . . . . . . . . . . 739

    Nozioni fondamentali sullambiente del sistema client . . . . . . . . . . . .739Uso della classe System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .742Uso della classe Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .744Uso della classe ApplicationDomain. . . . . . . . . . . . . . . . . . . . . . . . . . . .745Uso della classe IME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .749Esempio: Rilevamento delle caratteristiche del sistema. . . . . . . . . . .755

    Capitolo 24: Stampa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761

    Elementi fondamentali della stampa . . . . . . . . . . . . . . . . . . . . . . . . . . . .762Stampa di una pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .764Attivit di Flash Player e interfaccia di stampa del sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .765Impostazione delle dimensioni, della scala e dellorientamento . . . .768Esempio: Stampa su pi pagine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771Esempio: Modifica in scala, ritaglio e risposta. . . . . . . . . . . . . . . . . . . . 773

    Capitolo 25: Uso dellAPI esterna . . . . . . . . . . . . . . . . . . . . . . . . . 777

    Nozioni fondamentali sulluso dellAPI esterna . . . . . . . . . . . . . . . . . . . 778Requisiti e vantaggi dellAPI esterna. . . . . . . . . . . . . . . . . . . . . . . . . . . . 781Uso della classe ExternalInterface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .783

    Accesso alle informazioni sul contenitore esterno . . . . . . . . . . . . .783Chiamate al codice esterno da ActionScript. . . . . . . . . . . . . . . . . . .784Chiamate al codice ActionScript dal contenitore. . . . . . . . . . . . . . .785Il formato XML dellAPI esterna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787

    Esempio: Uso dellAPI esterna con una pagina Web contenitore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .789Esempio: Uso dellAPI esterna con un contenitore ActiveX . . . . . . . 797

    Capitolo 26: Sicurezza di Flash Player. . . . . . . . . . . . . . . . . . . . 807

    Panoramica sulla sicurezza di Flash Player . . . . . . . . . . . . . . . . . . . . . .808Panoramica dei controlli di autorizzazione . . . . . . . . . . . . . . . . . . . . . . .811Funzioni di sicurezza sandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .822Limitazioni delle API di connettivit di rete . . . . . . . . . . . . . . . . . . . . . .825Sicurezza modalit a schermo intero . . . . . . . . . . . . . . . . . . . . . . . . . . .827Caricamento di contenuto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .828Scambio di script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .832

  • 13

    Accesso a file multimediali caricati come dati . . . . . . . . . . . . . . . . . . . 836Caricamento di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840Caricamento di contenuto incorporato da file SWF importati in un dominio di sicurezza. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842Operazioni con contenuto precedente . . . . . . . . . . . . . . . . . . . . . . . . . 843Impostazione di autorizzazioni LocalConnection . . . . . . . . . . . . . . . . 844Controllo dellaccesso a script in una pagina Web host. . . . . . . . . . . 845Oggetti condivisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846Accesso a fotocamera, microfono, Appunti, mouse e tastiera . . . . . 848

    Indice analitico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849

  • 14

  • 15

    Informazioni sul manuale

    Questo manuale fornisce le basi per sviluppare applicazioni in ActionScript 3.0. Per comprendere al meglio gli argomenti e le tecniche descritte, il lettore dovrebbe gi conoscere determinati concetti generali di programmazione quali i tipi di dati, le variabili, i cicli e le funzioni, cos come alcuni aspetti fondamentali della programmazione a oggetti quali le classi e lereditariet. La conoscenza di ActionScript 1.0 o ActionScript 2.0 utile ma non indispensabile.

    SommarioUso del manuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    Accesso alla documentazione di ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

    Risorse di apprendimento per ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

  • 16 Informazioni sul manuale

    Uso del manualeI capitoli del manuale sono organizzati nei seguenti gruppi logici per aiutare il lettore a individuare pi facilmente le aree correlate della documentazione di ActionScript:

    Questo manuale contiene anche numerosi file di esempio, che dimostrano i concetti della programmazione di applicazioni per le classi pi importanti e utilizzate pi comunemente. I file di esempio sono inseriti in un pacchetto, in modo che sia facile scaricarli e utilizzarli con Adobe Flash CS3 Professional, e possono includere file wrapper. Tuttavia, il codice di esempio principale semplice ActionScript 3.0 che pu essere utilizzato in qualsiasi ambiente di sviluppo.

    ActionScript 3.0 pu essere scritto e compilato in vari modi:

    Utilizzando lambiente di sviluppo Adobe Flex Builder 2 Utilizzando qualunque editor di testo e compilatore della riga di comando, come quello

    fornito con Flex Builder 2 Utilizzando lo strumento di creazione Adobe Flash CS3 Professional

    Per ulteriori informazioni sugli ambienti di sviluppo di ActionScript, vedere Capitolo 1, Introduzione ad ActionScript 3.0

    Capitoli Descrizione

    Capitoli da 1 a 4: panoramica della programmazione in ActionScript

    Descrivono i concetti fondamentali di ActionScript 3.0: la sintassi del linguaggio, le istruzioni e gli operatori, la bozza della specifica del linguaggio ECMAScript Edizione 4, la programmazione a oggetti in ActionScript e il nuovo approccio alla gestione degli oggetti di visualizzazione nellelenco di visualizzazione di Adobe Flash Player 9.

    Capitoli da 5 a 10: tipi di dati e classi di base di ActionScript 3.0

    Descrivono i tipi di dati di primo livello di ActionScript 3.0 che fanno anche parte della specifica del linguaggio ECMAScript.

    Capitoli da 11 a 26: API di Flash Player Descrivono varie funzioni importanti che sono implementate nei pacchetti e nelle classi specifiche di Adobe Flash Player 9: gestione degli eventi, connettivit di rete e comunicazioni, input e output dei file, interfaccia esterna, modello di sicurezza dellapplicazione e altro ancora.

  • Accesso alla documentazione di ActionScript 17

    Per comprendere gli esempi di codice inclusi nel manuale non necessario avere gi esperienza nelluso di ambienti di sviluppo integrati per ActionScript, quali Flex Builder o lo strumento di creazione di Flash. Tuttavia, utile fare riferimento alla documentazione di questi programmi per imparare a utilizzarli per scrivere e compilare codice ActionScript 3.0. Per ulteriori informazioni, vedere Accesso alla documentazione di ActionScript a pagina 17.

    Accesso alla documentazione di ActionScriptPoich il manuale si concentra sulla descrizione di ActionScript 3.0, che un linguaggio di programmazione a oggetti articolato e potente, non tratta in modo dettagliato il processo di sviluppo delle applicazioni o il flusso di lavoro allinterno di un programma o di unarchitettura server particolare. Pertanto, oltre al manuale Programmazione in ActionScript 3.0, opportuno consultare altre fonti di documentazione nel corso del lavoro di progettazione, sviluppo, prova e distribuzione delle applicazioni ActionScript 3.0.

    Documentazione di ActionScript 3.0Questo manuale consente di acquisire familiarit con gli aspetti principali del linguaggio di programmazione ActionScript 3.0 e fornisce dettagli ed esempi di implementazione, che illustrano le funzioni pi importanti del linguaggio. Tuttavia, questo manuale non un dizionario completo di tutti gli elementi del linguaggio. Per informazioni esaustive, consultare la Guida di riferimento al linguaggio e ai componenti di ActionScript 3.0, che descrive ogni classe, metodo, propriet ed evento del linguaggio. La Guida di riferimento al linguaggio e ai componenti di ActionScript 3.0 contiene informazioni di riferimento dettagliate relative al linguaggio di base, ai componenti Flash (nei pacchetti fl) e alle API di Flash Player (nei pacchetti flash).

    Documentazione di FlashSe si utilizza lambiente di sviluppo Flash, utile consultare i manuali seguenti:

    Manuale Descrizione

    Uso di Flash Descrive come sviluppare applicazioni Web dinamiche nellambiente di creazione di Flash

    Programmazione in ActionScript 3.0 Descrive luso specifico del linguaggio ActionScript 3.0 e dellAPI principale di Flash Player

  • 18 Informazioni sul manuale

    Guida di riferimento al linguaggio e ai componenti di ActionScript 3.0

    Fornisce esempi di sintassi, uso e codice dei componenti Flash e dellAPI di ActionScript 3.0

    Uso dei componenti ActionScript 3.0 Illustra in dettaglio luso dei componenti per sviluppare le applicazioni Flash

    Apprendimento di ActionScript 2.0 in Adobe Flash

    Contiene una panoramica della sintassi di ActionScript 2.0 e informazioni sulluso di ActionScript 2.0 a seconda del tipo di oggetti con cui si lavora

    Guida di riferimento di ActionScript 2.0 Fornisce esempi di sintassi, uso e codice dei componenti Flash e dellAPI di ActionScript 2.0

    Uso dei componenti ActionScript 2.0 Illustra in dettaglio come utilizzare i componenti di ActionScript 2.0 per sviluppare applicazioni Flash

    Guida di riferimento dei componenti ActionScript 2.0

    Descrive ogni componente disponibile nella versione 2 di Adobe Component Architecture e la relativa API

    Estensione di Flash Descrive gli oggetti, i metodi e le propriet disponibili nellAPI JavaScript

    Guida introduttiva di Flash Lite 2.x Illustra come utilizzare Adobe Flash Lite 2.x per sviluppare applicazioni e fornisce esempi di sintassi, uso e codice per le funzioni ActionScript disponibili con Flash Lite 2.x

    Sviluppo di applicazioni Flash Lite 2.x Spiega come sviluppare applicazioni Flash Lite 2.x

    Introduzione ad ActionScript per Flash Lite 2.x

    Introduce allo sviluppo di applicazioni con Flash Lite 2.x e descrive tutte le funzioni ActionScript disponibili per gli sviluppatori Flash Lite 2.x

    Guida di riferimento di ActionScript per Flash Lite 2.x

    Fornisce esempi di sintassi, uso e codice per lAPI ActionScript 2.0 disponibile in Flash Lite 2.x

    Guida introduttiva di Flash Lite 1.x Fornisce unintroduzione a Flash Lite 1.x e descrive come provare il contenuto utilizzando lemulatore Adobe Device Central CS3

    Sviluppo di applicazioni Flash Lite 1.x Descrive come sviluppare applicazioni per i dispositivi mobili che utilizzano Flash Lite 1.x

    Manuale Descrizione

  • Risorse di apprendimento per ActionScript 19

    Risorse di apprendimento per ActionScriptOltre al contenuto di questi manuali, Adobe offre articoli aggiornati periodicamente, idee per la progettazione ed esempi nel Centro per sviluppatori Adobe e nellAdobe Design Center.

    Centro per sviluppatori AdobeNel Centro per sviluppatori Adobe sono disponibili informazioni aggiornate su ActionScript, articoli relativi allo sviluppo di applicazioni reali e informazioni su importanti problemi emergenti. Visitare il Centro per sviluppatori allindirizzo www.adobe.com/go/developer_it.

    Adobe Design CenterConsente di ottenere le informazioni pi aggiornate sulla progettazione digitale e di immagini in movimento. possibile accedere alla produzione dei pi noti artisti, scoprire le nuove tendenze di progettazione e affinare le proprie competenze con esercitazioni, flussi di lavoro di base e tecniche avanzate. Si consiglia di controllare un paio di volte al mese se sono disponibili esercitazioni e articoli aggiornati, nonch elementi di gallerie fotografiche da cui trarre ispirazione. Visitare il Design Center allindirizzo www.adobe.com/go/designcenter_it.

    Apprendimento di ActionScript per Flash Lite 1.x

    Descrive come utilizzare ActionScript nelle applicazioni Flash Lite 1.x e tutte le funzioni ActionScript disponibili in Flash Lite 1.x

    Guida di riferimento di ActionScript per Flash Lite 1.x

    Fornisce informazioni sulla sintassi e luso degli elementi ActionScript disponibili in Flash Lite 1.x

    Manuale Descrizione

  • 20 Informazioni sul manuale

  • 21

    1CAPITOLO 1

    Introduzione ad ActionScript 3.0

    Questo capitolo fornisce una panoramica di ActionScript 3.0, la nuova e rivoluzionaria versione del linguaggio ActionScript.

    SommarioInformazioni su ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    Vantaggi di ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    Novit di ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    Compatibilit con le versioni precedenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    Informazioni su ActionScriptActionScript il linguaggio di programmazione dellambiente runtime di Adobe Flash Player. Rende possibili linterattivit, la gestione dei dati e molte altre operazioni relative al contenuto e alle applicazioni Flash.

    ActionScript viene eseguito dallAVM (ActionScript Virtual Machine), che fa parte di Flash Player. Il codice ActionScript viene solitamente compilato in formato codice byte (una sorta di linguaggio di programmazione generato e interpretato dai computer) mediante un compilatore, come quello incorporato in Adobe Flash CS3 Professional o in Adobe Flex Builder oppure disponibile nellSDK Adobe Flex e in Flex Data Services. Il codice byte viene incorporato in file SWF, che vengono quindi eseguiti in Flash Player (lambiente runtime).

    ActionScript 3.0 offre un solido modello di programmazione che risulta familiare agli sviluppatori che hanno unesperienza di base nella programmazione a oggetti. Di seguito sono elencate alcune delle caratteristiche principali di ActionScript 3.0:

    Una nuova macchina virtuale ActionScript, chiamata AVM2, che utilizza un nuovo set di istruzioni per il codice byte e garantisce un notevole miglioramento delle prestazioni.

  • 22 Introduzione ad ActionScript 3.0

    Una pi moderna base di codice del compilatore, pi aderente allo standard ECMAScript (ECMA 262) e in grado di fornire ottimizzazioni pi estese rispetto alle versioni precedenti del compilatore.

    UnAPI (interfaccia di programmazione applicazioni) pi estesa e migliorata, con controllo di basso livello degli oggetti e modello a oggetti effettivo.

    Un linguaggio di base fondato sulla bozza di specifica del nuovo linguaggio ECMAScript (ECMA-262) edizione 4.

    UnAPI XML basata su ECMAScript for XML (E4X), come indicato nella specifica ECMA-357 edizione 2. E4X unestensione di ECMAScript che aggiunge XML al linguaggio come tipo di dati nativo.

    Un modello di eventi basato sulla specifica degli eventi DOM (Document Object Model) Livello 3.

    Vantaggi di ActionScript 3.0ActionScript 3.0 estende le funzionalit delle versioni precedenti del linguaggio di script ActionScript. concepito per facilitare la creazione di applicazioni sofisticate con set di dati di grandi dimensioni e con basi di codice a oggetti e riutilizzabili. Sebbene ActionScript 3.0 non sia indispensabile per creare contenuto da eseguire in Adobe Flash Player 9, la nuova versione apre le porte a miglioramenti delle prestazioni che sono possibili solo con la nuova macchina virtuale, AVM2. Il codice ActionScript 3.0 pu essere eseguito a una velocit fino a otto volte maggiore rispetto al codice ActionScript delle versioni precedenti.

    La versione precedente della macchina virtuale ActionScript, AVM1, in grado di eseguire codice ActionScript 1.0 e 2.0. AVM1 supportata da Flash Player 9 per garantire la compatibilit retroattiva con il contenuto creato nelle versioni precedenti di ActionScript. Per ulteriori informazioni, vedere Compatibilit con le versioni precedenti a pagina 27.

    Novit di ActionScript 3.0Sebbene ActionScript 3.0 contenga molte classi e caratteristiche che risulteranno familiari ai programmatori ActionScript, la nuove versione del linguaggio concettualmente e architettonicamente diversa da quelle precedenti. I miglioramenti introdotti in ActionScript 3.0 riguardano varie caratteristiche aggiunte al linguaggio di base e unAPI di Flash Player migliorata, che offre un maggiore controllo sugli oggetti di basso livello.

  • Novit di ActionScript 3.0 23

    Caratteristiche del linguaggio di baseIl linguaggio di base (core language) definisce i blocchi costitutivi del linguaggio di programmazione, quali le istruzioni, le espressioni, le condizioni, i cicli e i tipi. ActionScript 3.0 include molte nuove caratteristiche che consentono di velocizzare il processo di sviluppo.

    Eccezioni runtimeActionScript 3.0 segnala pi condizioni di errore rispetto alle versioni precedenti del linguaggio. Le eccezioni runtime sono utilizzate per le condizioni di errore pi comuni e consentono di migliorare il lavoro di debug e di sviluppare applicazioni pi efficienti nella gestione degli errori. Per gli errori runtime sono disponibili tracce di stack annotate con lindicazione del file di origine e del numero di riga, che consentono una rapida individuazione degli errori.

    Tipi runtimeIn ActionScript 2.0, le annotazioni di tipo fungevano principalmente da aiuto per lo sviluppatore; in fase di runtime, a tutti i valori veniva assegnato un tipo in modo dinamico. In ActionScript 3.0, le informazioni sul tipo vengono mantenute in fase di runtime e utilizzate per vari scopi. Flash Player 9 esegue la verifica runtime del tipo, aumentandone cos la sicurezza per il sistema. Le informazioni sul tipo vengono utilizzate anche per indicare le variabili nelle rappresentazioni native dei sistemi, ottenendo cos migliori prestazioni e una riduzione delluso di memoria.

    Classi chiuseActionScript 3.0 introduce il concetto di classe chiusa (sealed). Una classe chiusa possiede unicamente le propriet e i metodi definiti in fase di compilazione e non consente laggiunta di ulteriori propriet o metodi. Questa caratteristica consente una verifica pi rigorosa in fase di compilazione e permette di sviluppare programmi pi solidi. Inoltre, migliora luso della memoria perch non necessaria una tabella di hash interna per ogni istanza di oggetto. Le classi dinamiche possono essere specificate mediante la parola chiave dynamic. Tutte le classi di ActionScript 3.0 sono chiuse (sealed) per impostazione predefinita, ma possono essere dichiarate dinamiche mediante la parola chiave dynamic.

  • 24 Introduzione ad ActionScript 3.0

    Chiusure di metodoIn ActionScript 3.0 una chiusura di metodo in grado di memorizzare la propria istanza di oggetto originale. Questa caratteristica utile per la gestione degli eventi. In ActionScript 2.0, le chiusure di metodo non memorizzavano listanza di oggetto dalla quale venivano estratte e si verificava pertanto un comportamento inatteso quando una chiusura di metodo veniva richiamata. Linconveniente veniva spesso risolto utilizzando la classe mx.utils.Delegate, che ora non pi necessaria.

    ECMAScript for XML (E4X)ActionScript 3.0 implementa ECMAScript for XML (E4X), recentemente standardizzato come ECMA-357. E4X offre una serie funzionale di costrutti di linguaggio per la gestione del codice XML. A differenza delle tradizionali API di analisi XML, in E4X XML viene elaborato come tipo di dati nativo del linguaggio. E4X sveltisce lo sviluppo di applicazioni che utilizzano il codice XML riducendo drasticamente la quantit di codice richiesta. Per ulteriori informazioni sullimplementazione di E4X in ActionScript 3.0, vedere Capitolo 11, Operazioni con XML a pagina 367.

    Per visualizzare la specifica ECMA del linguaggio E4X, visitare il sito Web www.ecma-international.org.

    Espressioni regolariActionScript 3.0 include il supporto nativo per le espressioni regolari e permette quindi di trovare e modificare rapidamente stringhe di codice. ActionScript 3.0 implementa il supporto delle espressioni regolari cos come sono definite nella specifica del linguaggio ECMAScript edizione 3 (ECMA-262).

    Spazi dei nomiGli spazi dei nomi (namespace) sono simili ai tradizionali specificatori di accesso utilizzati per controllare la visibilit delle dichiarazioni (public, private, protected). Funzionano come specificatori di accesso personalizzati, ai quali possibile assegnare un nome a piacere. Gli spazi dei nomi includono un URI (Universal Resource Identifier) per evitare possibili conflitti e vengono utilizzati anche per rappresentare gli spazi dei nomi XML quando si lavora con il linguaggio E4X.

  • Novit di ActionScript 3.0 25

    Nuovi tipi di baseActionScript 2.0 prevede un unico tipo numerico, Number, che corrisponde a un numero a virgola mobile e precisione doppia. ActionScript 3.0 include i tipi int e uint. Il tipo int un numero intero a 32 bit con segno, che consente al codice ActionScript di sfruttare la velocit di elaborazione matematica dei numeri interi della CPU. utile nei contatori di ciclo e nelle variabili in cui sono utilizzati i numeri interi. Il tipo uint un numero intero a 32 bit senza segno, utile per i valori di colore RGB, i conteggi di byte e altre situazioni.

    Caratteristiche dellAPI di Flash PlayerLAPI di Flash Player in ActionScript 3.0 contiene molte nuove classi che consentono di controllare gli oggetti a basso livello. Larchitettura del linguaggio completamente nuova e pi intuitiva. Le classi sono troppo numerose per essere trattate in dettaglio in questa sede, pertanto le sezioni che seguono evidenziano le novit pi significative.

    Modello di eventi DOM3 Il modello di eventi DOM 3 (Document Object Model Level 3) fornisce una modalit standardizzata per la generazione e la gestione dei messaggi di evento, che consentono agli oggetti delle applicazioni di interagire e comunicare, mantenendo il proprio stato e reagendo ai cambiamenti. Realizzato in base alla Specifica degli eventi DOM Level 3 del World Wide Web Consortium, questo modello offre un meccanismo pi semplice ed efficiente rispetto agli eventi di sistema disponibili nelle versioni precedenti di ActionScript.

    Gli eventi e gli errori si trovano nel pacchetto flash.events. Larchitettura dei componenti Flash utilizza lo stesso modello di eventi dellAPI di Flash Player, quindi il sistema di eventi uniforme in tutta la piattaforma Flash.

    API dellelenco di visualizzazioneLAPI per laccesso allelenco di visualizzazione di Flash Player (la struttura che contiene tutti gli elementi visivi di unapplicazione Flash) consiste di classi che permettono di lavorare con gli elementi visivi di base in Flash.

    La nuova classe Sprite un blocco strutturale leggero, simile alla classe MovieClip ma pi appropriato come classe base per i componenti dellinterfaccia utente. La nuova classe Shape rappresenta le forme vettoriali raw. Per queste classi possibile creare naturalmente le istanze con loperatore new, nonch riassegnare dinamicamente lelemento principale in qualunque momento.

  • 26 Introduzione ad ActionScript 3.0

    La gestione della profondit ora automatica e incorporata in Flash Player, di conseguenza non pi necessaria lassegnazione dei numeri di profondit. Sono disponibili nuovi metodi per specificare e gestire lo z-order (profondit) degli oggetti.

    Gestione di dati e contenuti dinamiciActionScript 3.0 include dei meccanismi intuitivi e uniformi nellintera API per il caricamento e la gestione di risorse e dati nellapplicazione Flash. La nuova classe Loader fornisce un metodo unico per il caricamento di file SWF e immagini e permette di accedere a informazioni dettagliate sul contenuto caricato. La classe URLLoader offre un meccanismo distinto per il caricamento di testo e dati binari nelle applicazioni basate su dati, mentre la classe Socket permette di leggere e scrivere dati binari nei socket server in qualunque formato.

    Accesso di basso livello ai datiVarie API forniscono un accesso di basso livello ai dati che non era disponibile nelle versioni precedenti di ActionScript. Per i dati in corso di scaricamento, la classe URLStream (implementata da URLLoader) permette di accedere ai dati in formato raw binario mentre vengono scaricati. La classe ByteArray consente di ottimizzare la lettura, la scrittura e la gestione dei dati binari. La nuova API Sound fornisce un controllo dettagliato del suono mediante le classi SoundChannel e SoundMixer. Nuove API relative alla sicurezza forniscono informazioni sui privilegi di sicurezza di un file SWF o di un contenuto caricato, rendendo possibile una migliore gestione degli errori di sicurezza.

    Operazioni con il testoIl pacchetto flash.text di ActionScript 3.0 contiene tutte le API relative al testo. La classe TextLineMetrics fornisce dati metrici dettagliati per una riga di testo allinterno di un campo di testo; sostituisce il metodo TextField.getLineMetrics() di ActionScript 2.0. La classe TextField presenta nuovi metodi di basso livello interessanti, che forniscono informazioni specifiche su una riga di testo o un singolo carattere di un campo di testo. Tali metodi comprendono getCharBoundaries(), che restituisce un rettangolo che rappresenta il riquadro di delimitazione di un carattere, getCharIndexAtPoint(), che restituisce lindice del carattere in un punto specifico, e getFirstCharInParagraph(), che restituisce lindice del primo carattere di un paragrafo. I metodi a livello di riga includono getLineLength(), che restituisce il numero di caratteri di una riga di testo specifica, e getLineText(), che restituisce il testo della riga specificata. La nuova classe Font consente di gestire i caratteri incorporati nei file SWF.

  • Compatibilit con le versioni precedenti 27

    Compatibilit con le versioni precedentiCome sempre, Flash Player garantisce la totale compatibilit retroattiva con il contenuto pubblicato esistente. Qualunque contenuto che veniva eseguito nelle versioni precedenti di Flash Player pu essere eseguito anche in Flash Player 9. Lintroduzione di ActionScript 3.0 in Flash Player 9, tuttavia, presenta alcune problematiche relativamente allinteroperativit tra contenuto vecchio e nuovo in Flash Player 9. Di seguito sono elencati i principali problemi di compatibilit:

    Un unico file SWF non pu combinare codice ActionScript 1.0 o 2.0 con codice ActionScript 3.0.

    Il codice ActionScript 3.0 pu caricare un file SWF scritto in ActionScript 1.0 o 2.0, ma non pu accedere alle variabili e alle funzioni del file SWF.

    I file SWF scritti in ActionScript 1.0 o 2.0 non possono caricare file SWF scritti in ActionScript 3.0. Questo significa che i file SWF creati in Flash 8 o Flex Builder 1.5 (o in versioni precedenti) non possono caricare file SWF di ActionScript 3.0.Lunica eccezione a questa regola rappresentata dalla possibilit di sostituire un file SWF di ActionScript 2.0 con un file SWF di ActionScript 3.0, a condizione che non sia stato ancora caricato nulla in nessuno dei livelli del file SWF di ActionScript 2.0. Questa operazione possibile includendo nel file SWF di ActionScript 2.0 una chiamata a loadMovieNum() e passando il valore 0 al parametro level.

    In generale, necessario eseguire la migrazione dei file SWF scritti in ActionScript 1.0 o 2.0 se questi devono interagire con file SWF scritti in ActionScript 3.0. Ad esempio, si supponga di aver creato un lettore multimediale con ActionScript 2.0. Il lettore carica vari tipi di contenuto, a loro volta creati in ActionScript 2.0. Non invece possibile creare nuovo contenuto in ActionScript 3.0 e caricarlo nel lettore multimediale. Per poter eseguire questo tipo di operazione, occorre effettuare la migrazione del lettore ad ActionScript 3.0.Al contrario, un lettore multimediale creato in ActionScript 3.0 in grado di caricare contenuto ActionScript 2.0.

  • 28 Introduzione ad ActionScript 3.0

    La tabella seguente riepiloga le limitazioni relative al caricamento di nuovo contenuto e allesecuzione del codice nelle versioni precedenti Flash Player, nonch quelle relative allo scambio di script (cross-scripting) tra file SWF scritti in versioni diverse di ActionScript.

    Funzionalit supportata

    Ambiente runtime

    Flash Player 7 Flash Player 8 Flash Player 9

    Pu caricare file SWF pubblicati per

    7 e precedenti 8 e precedenti 9 e precedenti

    Contiene questa AVM AVM1 AVM1 AVM1 e AVM2

    Esegue i file SWF scritti in ActionScript

    1.0 e 2.0 1.0 e 2.0 1.0, 2.0 e 3.0

    Funzionalit supportata*

    * Contenuto eseguito in Flash Player 9 o versioni successive. Il contenuto eseguito in Flash Player 8 o versioni precedenti pu caricare, visualizzare, eseguire e scambiare script solo in ActionScript 1.0 e 2.0.

    Contenuto creato in

    ActionScript 1.0 e 2.0 ActionScript 3.0

    Pu caricare contenuto ed eseguire codice nel contenuto creato in

    Solo ActionScript 1.0 e 2.0ActionScript 1.0 e 2.0, e

    ActionScript 3.0

    Pu scambiare script con contenuto creato in

    Solo ActionScript 1.0 e 2.0

    ActionScript 3.0 tramite Local Connection.

    ActionScript 3.0

    ActionScript 1.0 e 2.0 tramite LocalConnection.

  • 29

    2CAPITOLO 2

    Guida introduttiva ad ActionScript

    Questo capitolo offre una panoramica del linguaggio di programmazione ActionScript e pone le basi di cui lutente ha bisogno per capire i concetti e gli esempi presentati negli altri capitoli del manuale. Il contenuto del capitolo si articola in due blocchi: la descrizione delle nozioni fondamentali sulla programmazione, con relativa applicazione nellambiente ActionScript, e le operazioni essenziali per organizzare e creare unapplicazione tramite ActionScript.

    SommarioNozioni fondamentali sulla programmazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    Operazioni con gli oggetti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    Elementi comuni dei programmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    Esempio: Porzione del portfolio animazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    Creazione di applicazioni con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    Creazione di classi personalizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    Esempio: Creazione di unapplicazione di base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    Esempi successivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

  • 30 Guida introduttiva ad ActionScript

    Nozioni fondamentali sulla programmazioneDal momento che ActionScript un linguaggio di programmazione, utile avere presenti alcuni concetti fondamentali riguardanti la programmazione.

    Che cosa sono i programmiPer iniziare, importante avere presente, da un punto di vista concettuale, che cosa si intende per programma di un computer e che cosa fa un programma. I concetti fondamentali relativi ai programmi sono due:

    Un programma una serie di istruzioni o procedure che il computer esegue. Ogni procedura consta, sostanzialmente, nella manipolazione di informazioni o dati.

    Un programma per computer un elenco di comandi dettagliati che lutente impartisce al computer e che il computer esegue in sequenza. Ogni singolo comando si chiama istruzione e come vedremo pi avanti, tutte le istruzioni di ActionScript terminano con un punto e virgola.

    In sostanza, listruzione di un programma manipola dei dati che si trovano nella memoria del computer. In un caso semplice, lutente pu impartire unistruzione che richiede al computer di sommare due numeri e di salvare il risultato in memoria. In un caso pi complesso, lutente scrive un programma che sposta un rettangolo disegnato sullo schermo in una posizione diversa. Il computer memorizza alcune informazioni sul rettangolo, come le coordinate x e y che ne descrivono la posizione attuale, le misure della base e dellaltezza, il colore e cos via. Tutti questi frammenti di informazioni vengono trattenuti nella memoria del computer. Un programma in grado di spostare il rettangolo in un punto diverso dello schermo conterr comandi del tipo imposta la coordinata x su 200; imposta la coordinata y su 150 (si tratta, in altre parole, di specificare quali nuovi valori il computer deve utilizzare come coordinate x e y). Ovviamente, per poter convertire questi valori nellimmagine visualizzata sullo schermo, il computer interpreta e manipola i dati forniti. Tuttavia, per il livello di approfondimento che ci siamo prefissati di raggiungere, sufficiente sapere che loperazione sposta il rettangolo in un punto diverso dello schermo consiste nel cambiare alcuni dati presenti nella memoria del computer.

  • Nozioni fondamentali sulla programmazione 31

    Variabili e costantiDal momento che la programmazione consiste principalmente nella manipolazione di dati presenti nella memoria del computer, stato escogitato un metodo per rappresentare un singolo valore allinterno di un programma. Lentit che rappresenta un valore presente nella memoria del computer si chiama variabile. Nel momento in cui scrive le istruzioni del programma, il programmatore inserisce il nome della variabile in luogo del suo valore; infatti compito del computer prelevare il valore che ha in memoria ogni volta che incontra quella determinata variabile. Ad esempio, supponiamo di avere due variabili chiamate value1 e value2 e che entrambe contengano un numero. Per sommare i due valori delle variabili si potrebbe scrivere la seguente istruzione:value1 + value2

    Quando esegue listruzione, il computer individua il valore di ciascuna variabile e li somma.

    In ActionScript 3.0, le variabili sono caratterizzate da tre aspetti:

    Il nome della variabile Il tipo di dati che la variabile pu rappresentare Leffettivo valore memorizzato nel computer

    Abbiamo gi chiarito il concetto che il computer usa il nome della variabile come segnaposto del valore. Ma il tipo di dati un aspetto altrettanto importante. Durante la creazione di una variabile in ActionScript, necessario specificare il tipo di dati che la variabile potr contenere. Da questo momento in avanti, le istruzioni del programma potranno memorizzare solo quel tipo di dati nella variabile e qualsiasi operazione eseguita sul valore dovr rispettare le caratteristiche associate al tipo di dati assegnato. Per creare una variabile, operazione comunemente definita come dichiarare una variabile, in ActionScript si usa listruzione var:var value1:Number;

    In questo caso, abbiamo istruito il computer di creare la variabile value1, che potr contenere solo dati di tipo Number (Number un tipo di dati specifico di ActionScript che corrisponde a valore numerico). In alternativa, possibile associare immediatamente un valore alla variabile:var value2:Number = 17;

  • 32 Guida introduttiva ad ActionScript

    In Adobe Flash CS3 Professional esiste un altro modo per dichiarare una variabile. Quando si inserisce un simbolo di clip filmato, un simbolo di pulsante o un campo di testo sullo stage, possibile associarlo a un nome di istanza nella finestra di ispezione Propriet. In modo completamente trasparente per lutente, Flash crea una variabile con lo stesso nome dellistanza che il programmatore pu utilizzare nel codice ActionScript per richiamare quellelemento dello stage. Per esempio, se si inserisce sullo stage un simbolo di clip filmato a cui si assegna il nome di istanza rocketShip, ogni volta che si utilizza la variabile rocketShip nel codice ActionScript si richiama quel clip filmato.

    Tipi di datiActionScript mette a disposizione vari tipi di dati da utilizzare per le variabili. Alcuni di essi possono essere considerati tipi di dati semplici o fondamentali:

    String: unit di testo, come un nome o il capitolo di un libro Dati numerici: ActionScript 3.0 comprende tre sottogruppi specifici per i dati numerici:

    Number: qualsiasi valore numerico, con o senza decimali int: numero intero senza decimali uint: numero intero senza segno, vale a dire un numero intero non negativo

    Boolean: tipo di dati i cui unici valori possibili sono vero o falso, che descrive, ad esempio, se uno switch attivo o se due valori sono uguali

    I tipi di dati semplici rappresentano una porzione di dati singola: ad esempio, un unico numero o ununica sequenza di testo. Tuttavia, la maggior parte dei tipi di dati definiti tramite ActionScript sono dati complessi in quanto rappresentano un gruppo di valori combinati tra loro. Per esempio, una variabile del tipo Date rappresenta un valore unico, cio una data precisa. Tuttavia, il valore della data rappresentato da una serie di valori: il giorno, il mese, lanno, le ore, i minuti, i secondi e cos via, vale a dire da una serie di numeri distinti. Di conseguenza, mentre noi concepiamo una data come un valore singolo (e lo possiamo trattare come tale impostando una variabile Date), il computer considera la data come una serie di valori che, combinati, definiscono un momento preciso.

    La pi parte dei tipi di dati incorporati, e dei tipi di dati definiti dai programmatori, sono in realt dati complessi. Alcuni dei tipi di dati complessi pi conosciuti sono:

    MovieClip: simbolo di clip filmato TextField: campo di testo dinamico o di input SimpleButton: simbolo di pulsante Date: indicazione temporale precisa (data e ora)

  • Operazioni con gli oggetti 33

    Due termini che vengono spesso utilizzati come sinonimo di tipo di dati sono classe e oggetto. Una classe semplicemente la definizione di un tipo di dati, il modello di riferimento per tutti gli oggetti appartenenti a quel tipo di dati. Come dire, tutte le variabili del tipo di dati Example hanno queste caratteristiche: A, B e C. Un oggetto, daltro canto, una istanza di una classe; una variabile di tipo MovieClip pu essere descritta come un oggetto MovieClip. Gli esempi seguenti sono modi diversi per esprimere lo stesso concetto:

    Il tipo di dati della variabile myVariable Number. La variabile myVariable unistanza Number. La variabile myVariable un oggetto Number. La variabile myVariable unistanza della classe Number.

    Operazioni con gli oggettiActionScript un cosiddetto linguaggio di programmazione orientato agli oggetti. La programmazione orientata agli oggetti semplicemente un modello di programmazione, un modo di organizzare il codice per definire un programma che utilizza gli oggetti.

    In precedenza, abbiamo descritto un programma per computer come una serie di istruzioni o procedure che il computer esegue. Concettualmente, quindi, potremmo immaginare che un programma solo un lunghissimo elenco di istruzioni. In realt, nella programmazione orientata agli oggetti, le istruzioni sono raggruppate in base alloggetto a cui si riferiscono; di conseguenza, il codice organizzato in moduli funzionali dove le procedure correlate o i dati correlati sono raggruppati in un contenitore.

    Chi sa utilizzare i simboli in Flash abituato a utilizzare gli oggetti. Immaginiamo che sia stato definito un simbolo di filmato clip, ad esempio il disegno di un rettangolo, e che una copia di questo sia stata inserita sullo stage. Il simbolo del filmato clip anche, letteralmente, un oggetto di ActionScript; oltre a essere una istanza della classe MovieClip.

    Il programmatore pu modificare varie caratteristiche del filmato clip. Dopo averlo selezionato, pu cambiarne i valori nella finestra di ispezione Propriet, cio modificare la coordinata x, la larghezza, regolarne i colori, modificando il valore alfa (trasparenza), o applicare un filtro ombra esterna. Con altri strumenti di Flash pu apportare ulteriori modifiche, ad esempio pu applicare una rotazione usando lo strumento Trasformazione libera. Le operazioni eseguite per modificare il filmato clip nellambiente di creazione di Flash possono essere impostate anche in ActionScript cambiando i frammenti di dati che vengono combinati nel pacchetto definito oggetto MovieClip.

  • 34 Guida introduttiva ad ActionScript

    Nella programmazione orientata agli oggetti di ActionScript, una classe pu comprendere tre tipi di caratteristiche:

    Propriet Metodi Eventi

    Combinati insieme, questi elementi permettono di manipolare i dati utilizzati dal programma e di definire le azioni da eseguire e la relativa sequenza.

    ProprietUna propriet rappresenta una porzione di dato che, combinata con altre, fa parte delloggetto. Un oggetto song potrebbe avere le propriet artist e title; la classe MovieClip ha propriet del tipo rotation, x, width e alpha. Le propriet vengono utilizzate come se fossero variabili singole, in realt, si pu addirittura considerare le propriet come variabili secondarie di un oggetto.

    Ecco alcuni esempi dellimpiego di propriet nel codice ActionScript. Questa riga di codice sposta il filmato clip denominato square nella coordinata x di 100 pixel:square.x = 100;

    Questa riga di codice utilizza la propriet rotation per imprimere al filmato clip square la stessa rotazione del filmato clip triangle:square.rotation = triangle.rotation;

    Questa riga di codice modifica la scala orizzontale del filmato clip square su un valore di una volta e mezzo superiore rispetto alloriginale:square.scaleX = 1.5;

    Notare la struttura che accomuna queste righe di codice: si scrive la variabile (square, triangle) come nome delloggetto seguita da un punto (.) a sua volta seguito dal nome della propriet (x, rotation, scaleX). Il punto, conosciuto come operatore punto, introduce un elemento secondario di un oggetto. Lintera struttura, nome variabile-punto-nome propriet, viene considerata ununica variabile che d il nome a un singolo valore della memoria del computer.

  • Operazioni con gli oggetti 35

    MetodiUn metodo unazione eseguita da un oggetto. Per esempio, se usando Flash si creato un simbolo di clip filmato contenente vari fotogrammi e animazioni nella linea temporale, possibile riprodurre o interrompere il filmato clip oppure spostare lindicatore di riproduzione su un particolare fotogramma.

    Questa riga di codice indica di avviare la riproduzione del filmato clip denominato shortFilm:shortFilm.play();

    Questa riga di codice indica di interrompere la riproduzione del filmato clip denominato shortFilm (lindicatore di riproduzione si ferma nel punto in cui si trova, come succede quando si preme il tasto pausa di un video):shortFilm.stop();

    Questa riga di codice indica di spostare lindicatore di riproduzione al fotogramma 1 e di interrompere la riproduzione del filmato clip denominato shortFilm (come succede quando si riavvolge un video):shortFilm.gotoAndStop(1);

    Risulta chiaro che si invocano i metodi proprio come le propriet: si scrive il nome delloggetto (una variabile) seguito da un punto, poi si aggiunge il nome del metodo seguito da due parentesi. Le parentesi indicano la chiamata al metodo, vale a dire che si sta richiedendo alloggetto di eseguire quella determinata azione. A volte le parentesi possono contenere dei valori o delle variabili che forniscono informazioni aggiuntive da utilizzare per eseguire lazione. Questi valori aggiuntivi vengono definiti parametri del metodo. Per esempio, per il metodo gotoAndStop() necessario specificare il fotogramma dove lindicatore di riproduzione si deve fermare, pertanto richiede la specifica di un parametro tra parentesi. Altri metodi, come play() e stop(), sono sufficientemente chiari e non richiedono informazioni supplementari, anche se le due parentesi del nome vengono mantenute.

    Contrariamente alle propriet e alle variabili, i metodi non sono utilizzati come segnaposto di valori, nonostante alcuni di essi possano eseguire dei calcoli e restituire un risultato che pu essere utilizzato come una variabile. Per esempio, il metodo toString() della classe Number converte il valore numerico in una stringa di testo:var numericData:Number = 9;var textData:String = numericData.toString();

  • 36 Guida introduttiva ad ActionScript

    Si pu utilizzare il metodo toString() per visualizzare il valore della variabile Number in un campo di testo dello schermo. La propriet text, che rappresenta il testo visualizzato sullo schermo, della classe TextField definita come String, di conseguenza pu contenere solo valori di testo. Questa riga di codice converte il valore numerico della variabile numericData in testo e lo visualizza sullo schermo nelloggetto TextField denominato calculatorDisplay:calculatorDisplay.text = numericData.toString();

    Eventi Abbiamo descritto un programma per computer come una serie di istruzioni che il computer esegue in sequenza. I programmi pi semplici non sono niente di pi: una serie di procedure che il computer esegue e terminate le quali il programma finisce. I programmi creati con ActionScript, tuttavia, sono progettati per non interrompersi e attendere linput da parte dellutente o il verificarsi di altre condizioni. Gli eventi sono il meccanismo che definisce le istruzioni che il computer esegue e la relativa sequenza.

    In sostanza, gli eventi sono condizioni che si verificano di cui ActionScript consapevole e a cui in grado di reagire. Molti eventi solo collegati allinterazione dellutente, la selezione di un pulsante o la pressione di un tasto della tastiera, ma ne esistono anche di altri tipi. Per esempio, se si usa ActionScript per caricare unimmagine esterna, esiste un evento che pu avvertire quando limmagine stata caricata completamente. In pratica, durante lesecuzione di un programma ActionScript, Adobe Flash Player rimane in ascolto e attende il verificarsi di determinati eventi; quando questi si realizzano, Flash esegue il codice ActionScript specificato per quei particolari eventi.

    Principi di gestione degli eventiPer gestione degli eventi si intende la definizione delle azioni da eseguire in risposta a particolari eventi. La scrittura di codice ActionScript per la gestione degli eventi presuppone lidentificazione di tre elementi importanti:

    Lorigine dellevento: Su che oggetto si verificher levento? Ad esempio, quale pulsante verr selezionato o quale oggetto Loader carica limmagine? Lorigine dellevento corrisponde anche al target dellevento, in quanto si tratta delloggetto in cui Flash Player esegue lazione (in cui levento si verifica).

    Levento: qual levento che si attende, levento a cui bisogna rispondere? particolarmente importante identificare correttamente levento, perch molti oggetti attivano eventi diversi.

    La risposta: Che cosa deve succedere quando levento si realizza?

  • Operazioni con gli oggetti 37

    Il codice ActionScript per la gestione degli eventi deve sempre comprendere questi tre elementi e riprodurre questa struttura di base (gli elementi in grassetto sono segnaposti modificabili a seconda del caso specifico):function eventResponse(eventObject:EventType):void{

    // Le azioni di risposta agli eventi vanno definite qui.}

    eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

    Questo esempio di codice svolge due compiti. Definisce una funzione, vale a dire che specifica le azioni che devono avvenire in risposta allevento. In secondo luogo, chiama il metodo addEventListener() delloggetto di origine, in pratica associando la funzione allevento, in modo che quando si verifica levento vengono attivate le azioni descritte nella funzione. Ora affronteremo ogni compito in maggiore dettaglio.

    Una funzione rappresenta un modo per raggruppare insieme varie azioni creando ununica entit dotata di un nome proprio. Le funzioni sono quasi identiche ai metodi, con lunica differenza che non sono necessariamente associate a una classe specifica; infatti, si potrebbe definire i metodi come funzioni associate a una classe specifica. Una funzione per la gestione di eventi deve avere obbligatoriamente un nome (in questo caso eventResponse) e un parametro (nel nostro esempio: eventObject). La specifica di un parametro per una funzione equivale alla dichiarazione di una variabile, di conseguenza, per il parametro necessario definire il tipo di dati. Per ogni evento viene definita una classe di ActionScript e il tipo di dati specificato per il parametro della funzione sempre la classe associata allevento a cui si intende rispondere. Infine, tra le parentesi graffe ({ ... }), scrivere le procedure che il computer deve eseguire quando levento si verifica.

    Una volta scritta la funzione di gestione degli eventi, necessario comunicare alloggetto di origine dellevento (loggetto su cui si verifica levento, ad esempio, il pulsante) che la funzione deve essere richiamata nel momento in cui levento si verifica. A questo scopo, si chiama il metodo addEventListener() delloggetto; infatti, tutti gli oggetti associati ad eventi sono associati anche al metodo addEventListener(). Il metodo addEventListener() accetta due parametri:

    Prima di tutto, il nome dellevento specifico a cui rispondere. Come gi spiegato in precedenza, ogni evento collegato a una classe specifica e nella classe ogni evento ha un valore predefinito speciale, o nome, che lutente deve usare come primo parametro del metodo.

    Secondariamente, il nome della funzione di risposta allevento. Si noti che i nomi di funzione passati come parametri vanno scritti senza parentesi.

  • 38 Guida introduttiva ad ActionScript

    Analisi del processo di gestione degli eventiSegue una descrizione dettagliata del processo che si mette in atto quando si crea un listener di eventi. Lesempio illustra la creazione di una funzione di listener da chiamare quando lutente fa clic sulloggetto myButton.

    Il codice scritto dal programmatore il seguente:function eventResponse(event:MouseEvent):void{

    // Actions performed in response to the event go here.}

    myButton.addEventListener(MouseEvent.CLICK, eventResponse);

    Ecco cosa succede quando il codice viene eseguito da Flash Player:

    1. Nel momento in cui carica il file SWF, Flash Player registra lesistenza della funzione eventResponse().

  • Operazioni con gli oggetti 39

    2. Flash Player esegue il codice (precisamente le righe di codice che non fanno parte di una funzione). In questo caso si tratta di una sola riga di codice: la chiamata al metodo addEventListener() sulloggetto di origine dellevento (denominato myButton) e il passaggio della funzione eventResponse come parametro.

    a. Internamente, myButton comprende una serie di funzioni che intercettano ciascuno di questi eventi, quindi, quando viene chiamato il metodo addEventListener(), myButton registra la funzione eventResponse() tra i suoi listener di eventi.

  • 40 Guida introduttiva ad ActionScript

    3. A un certo punto, quando lutente fa clic sulloggetto myButton, viene attivato levento click (definito nel codice come MouseEvent.CLICK).

    A questo punto, si verifica quanto segue:a. Flash Player crea in oggetto, unistanza della classe associata allevento in questione

    (nel nostro esempio: MouseEvent). Per molti eventi si tratter di unistanza della classe Event; per gli eventi del mouse si tratter di unistanza di MouseEvent e per tutti gli altri eventi sar unistanza della classe associata allevento. Loggetto creato viene definito oggetto evento e contiene infor