La tecnica del Chroma Key, cioè la sostituzione di un determinato colore con un altro (o una diversa sorgente), è riesplosa nell’ultimo decennio con notevole prepotenza, grazie alla sempre più diffusa tecnologia presente nel cinema e nel trattamento di immagini digitali.
Categoria ‘Actionscript 3.0’
Come applicare la tecnica del Chroma Key in Adobe Flash
Adobe Flash CS4: creare un Ajax Loader o Activity Indicator
Creare un Ajax Loader (o Activity indicator per chi è ormai abituato ad usare l’Apple iPhone) per il Web non è una cosa difficile: esistono servizi che generano immagini gif animate di tutti i tipi. Tuttavia il formato GIF ha il grosso difetto di non supportare le trasparenze come si deve. La trasparenza, nel formato GIF attuale, coinvolge un solo piano di bit con la conseguenza che se non abbiamo un colore di sfondo uniforme, i bordi dell’immagine risultano notevolmente sgranati e frammentati.
Actionscript 3.0 for beginners: lesson #5
Chi ha iniziato a sviluppare codice con linguaggi di scripting come Javascript o lo stesso Actionscript, potrebbe non conoscere affatto il concetto di tipo dato. Con alcuni linguaggi ad alto livello, infatti, si è abituati – nella migliore delle ipotesi – a dichiarare le variabili senza assegnargli un tipo dato specifico, senza contare quei linguaggi che non richiedono nessuna dichiarazione (come ad esempio il PHP – non nella versione strict 5).
Very short trick: ADDED_TO_STAGE
Come abbiamo visto più volte, nel costruttore di una classe che estende un MovieClip può essere necessario aggiungere l’evento ADDED_TO_STAGE per capire quando il nostro MovieClip è disegnato effettivamente sulla stage:
Very short trick: addEventListener() AS3, un handler più eventi
In Actionscript 3.0 è necessario utilizzare addEventListener() per intercettare un qualsiasi evento:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** * Dato un MovieClip mc, si impostano eventi e handler */ mc.addEventListener( MouseEvent.CLICK, on_click ); mc.addEventListener( MouseEvent.ROLL_OVER, on_roll_over ); mc.addEventListener( MouseEvent.ROLL_OUT, on_roll_out ); /** * Funzioni di hander per gli eventi sopra indicati */ function on_click( e:MouseEvent ):void { // click } function on_roll_over( e:MouseEvent ):void { // roll over } function on_roll_out( e:MouseEvent ):void { // roll out } |
Adobe AIR e le API di Feedburner: reloaded
Prendo spunto dall’ottimo tutorial di Napolux, Flex 3, Adobe AIR e le API di Feedburner, che mostra come scrivere una semplice applicazione (o widget) Adobe AIR usando Flex 3, per mostrare come realizzare la stessa identica cosa usando Adobe Flash CS3. Se lo desiderate, inoltre, potete sfruttare l’estensione per la creazione di applicazioni Adobe AIR. Non è infatti necessario, ai fini di questo tutorial, compilare l’applicazione come eseguibile AIR; potete usare il codice proposto come semplice filmato Flash da “apporre” alle vostre pagine Web.
Actionscript 3.0 for beginners: lesson #4
Riprendiamo il nostro codice di esempio del TicTacToe (che trovate per intero su Google Code) e iniziamo ad analizzarlo in dettaglio.
Importare le definizioni
Con Actionscript 3.0 è stato fatto un grande lavoro di pulizia e sistemazione nell’alberatura delle classi (contenute nei pacchetti, package) utilizzate durante lo sviluppo. In altri linguaggi di programmazione, come il C ad esempio, quando si desidera utilizzare una funzionalità bisogna esplicitamente “importarla” nel codice. Questa operazione di “importazione” è necessaria per permettere al compilatore di avere tutti i codici e le definizioni legate alla funzionalità che vogliamo usare. In Actionscript 3.0, tuttavia, l’istruzione import non va confusa con l’equivalente C/C++ #include; Actionscript 3.0 mette a disposizione l’istruzione include che è identica all’#include del C/C++. Quest’ultima, infatti, “include” effettivamente del codice che, se usato o meno, viene compilato nell’eseguibile finale. L’istruzione import è di più alto livello e risulta più “intelligente” in fase di compilazione. Essa serve principalemente per accedere alle classi senza doverne specificare il nome completo. In alre parole invece di usare forme del tipo:
Very short trick: cicli for più rapidi in Actionscript
In Actionscript i cicli for è bene utilizzarli sempre con cura. Ad esempio è bene usare variabili uint quando è possibile:
1 2 3 |
È anche possibile usare la – non sempre conosciuta – forma:
1 2 3 4 5 |
Actionscript 3.0: MovieClip over MovieClip
Appena uno sviluppatore Flash/Actionscript si appresta a scrivere una funzione simile ad un tooltip, si scontra immediatamente con il problema della propagazione degli eventi tra MovieClip sovrapposti. Infatti se un MovieClip (B) si sovrappone ad un MovieClip (A) che risponde, ad esempio, ad un evento MouseEvent.Mouse_OVER, passando con il mouse sul MovieClip (B) più alto nessun evento verrà più intercettato dal MovieClip (A):

Actionscript 3.0 for beginners: lesson #3
Continuiamo l’analisi dell’esempio del gioco Tic Tac Toe, presentato in Actionscript 3.0 for beginners: lesson #2. Eravamo arrivati alla funzione che crea la griglia di gioco:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /** * Disegno graficamente la griglia (3x3) a video * * @param void * @return void * @private */ private function createGrid():void { // puntatore temporaneo ad uno oggetto MovieClip // nota: qui si sarebbe potuto usare anche un oggetto Sprite // ma in questo caso mi serve di poter estendere l'oggetto // aggiungendo alcune proproetà personali. L'oggetto Sprite // è una classe chiusa e quindi non estendibile runtime, mentre // la classe MovieClip è una classe dinamica e quindi rende // possibile l'aggiunta di proprietà runtime var tm:MovieClip, i:uint = 0; // aggiungo in uno schema 3x3 i MovieClip for(; i < 9; i++) { tm = new MovieClip(); addChild( tm ); tm.x = OFFSETX+( (i%3)*(PLAYER_WIDTH+PLAYER_OFFSET) ) tm.y = OFFSETY+Math.floor(i/3)*(PLAYER_HEIGHT+PLAYER_OFFSET) tm._index = i; drawPlayer( tm, 0 ); } // disegno le 2 linee veriticali e le 2 orizzontali with( this.graphics ) { lineStyle(6,0x666666); moveTo(OFFSETX,OFFSETY+(PLAYER_HEIGHT+15)); lineTo(OFFSETX+( (PLAYER_WIDTH+20)*3 ),OFFSETY+(PLAYER_HEIGHT+15)); moveTo(OFFSETX,OFFSETY+(PLAYER_HEIGHT+20)*2); lineTo(OFFSETX+( (PLAYER_WIDTH+20)*3 ),OFFSETY+(PLAYER_HEIGHT+20)*2); moveTo(OFFSETX+(PLAYER_WIDTH+15),OFFSETY); lineTo(OFFSETX+(PLAYER_WIDTH+15),OFFSETY+( (PLAYER_HEIGHT+20)*3 )); moveTo(OFFSETX+(PLAYER_WIDTH+20)*2,OFFSETY); lineTo(OFFSETX+(PLAYER_WIDTH+20)*2,OFFSETY+( (PLAYER_HEIGHT+20)*3 )); } } |






Ultimi Commenti
Giovambattista Fazioli: @ale: Come indicato @Kevin vedi sul repo di GitHub: https://github.com/gfazioli/Ch roma-Key
Giovambattista Fazioli: @Kevin: See https://github.com/gfazioli/Ch roma-Key
Kevin: Very nice example – would like to see the .fla too!
Ludovica: Ciao! Ti spiego il mio dubbio. Quando scrivo un post non inserisco immagini nell’articolo (se così...
Marco: ciao @Giovambattista Fazioli, grazie per tutte le delucidazioni di questa ottima guida. Avrei un quesito da...