Considerazioni sull’evoluzione dei linguaggi di svilluppo: AS2 vs AS3

Martedì 5 Agosto, 2008

Leggendo l’articolo di Julius ActionScript 2 o ActionScript 3? Facciamo chiarezza! vorrei fare alcune considerazioni sull’evoluzione "inversa" di alcuni strumenti di sviluppo per chi, come me, viene dalla programmazione C/C++.

Una caratteristica comune - negli ultimi anni - di alcuni ambienti di sviluppo è quella di raffinare la sinstassi del proprio linguaggio con il tempo. Si parte da un linguaggio ad alto livello, come il Lingo di Macromedia Director, Actionscript 1.0 delle prime versioni di Flash o Microsoft Visual Basic 3 per arrivare ad allinearsi con il tempo alle specifiche e alle - ormai consolidate - sintassi dettate dallo standard ECMA. Anche se paragonare un Microsoft Visual Basic 3 con Javascript o Actionscript non è del tutto corretto, entrambe le situazioni denotano una chiara evoluzione "inversa" rispetto agli albori della codifica di programmazione.
Unica eccezione, forse, in questo scenario, sono soluzioni come Java o PHP, entrambi con radici fortemente orientate al C/C++.

Concentrandoci su Actionscript, è chiara la volontà della casa prodruttrice (ora Adobe) ad allineare il linguaggio di Flash allo standard ECMA. Usare ancora Actionscript 2.0 non porta nessun concreto vataggio allo sviluppatore, soprattutto a chi non possiede le conoscenze di base proprie del C/C++. Aggiungere patch a vecchi progetti, senza doverli "portare" (riscrivere) in base alle ultimi release, ha un senso in un’ottica di economia. Tuttavia sarebbe utile imparare subito, quando si presenta l’occasione, le "nuove" sintassi proposte dagli aggiornamenti degli ambienti di sviluppo. Più si attende e peggio sarà!

Apprendere Actionscript 3.0, per chi viene dal C/C++, è più come "disapprendere" (o disimparare), le vecchie "clausule", forzate e non standard, presenti nelle precendenti versioni. Stessa cosa accadrà con l’uscita di Flash CS4; evitare, quindi, di rimanere indietro.

Inoltre, lo standard, rende la portabilità del codice estremamente più fattibile e concreta. La similitudine tra PHP, Javascript e Actionscript 3.0, evita di dover rivedere pesantamente codici e algoritmi scritti in uno solo di questi linguaggi.

Post correlati

Tecniche di Text Replacement in Flash

Mercoledì 25 Giugno, 2008

La tecnica di Text Replacement che presento oggi è, per certi aspetti, davvero interessante. A differenza della classica sostituizione per immagine tramite CSS, questa tecnica usa un filmato Flash per sovrascrivere i titoli del nostro sito. Nonostante sia un pochino più articolata, in quanto richiede la creazione di un filmato Flash e l’uso di Javascript, permette di ottenere una serie di vantaggi non indifferenti:

  • Mantiene l’accessibilità del sito sfruttando un True-Unobtrusive-Javascript in modo che crawler e spider continuino a vedere la pagina come semplice e corretto HTML
  • Non richiede la creazione di n immagini per n titoli. Basta un solo filmato per sostituire tutti i titoli del nostro sito, con un notevole risparmio in termini di Download
  • Permette di creare anche titoli semplici ma con Font normalmente non utilizzati sul Web
  • Il testo può essere reso in HTML, grazie alle caratteristiche di Flash
  • Il testo è selezionabile
  • Essendo un filmato Flash si può inserire interattività e animazioni di qualsiasi sorta

Noterete, anche, che in questa procedura i CSS non sono praticamente presi in considerazione!

Continua a leggere… »

Post correlati

PicLens in Flash con Papervision3D 2.0: parte II

Martedì 17 Giugno, 2008

Questa volta (vedi Piclens in Flash con Papervision3D 2.0) pubblico il codice (PicLens.as), ho dovuto rivedere alcune parti di codice, allineandomi così agli ultimi rilasci di Papervision3D 2.0 Great White ed ho eseguito alcuni aggiustamenti e aggiunte. Ho inserito in questa demo anche una serie di Knob, manopole, per modificare runtime alcuni parametri.

Simulazione del moto PicLens

Per avvicinarmi il più possibile al movimento orizzontale di PicLens originale, ho usato un piccolo stratagemma inserendo un "non visibile" DisplayObject3D come target per la camera:

Actionscript:
  1. __fooTarget = new DisplayObject3D();
  2. ...
  3. __bv.cameraAsCamera3D.target = __fooTarget;

In pratica la camera punta sempre il DisplayObject3D posto dietro la serie di immmagini. Quando la camera si muove (con un movimento accelerato/inerziale) anche il DisplayObject3D la segue, ma con un leggero ritardo. Questo mi ha permesso di rendere l'effetto di moto morbido e del tutto simile a quello realizzato su PicLens originale:

Actionscript:
  1. __bv.cameraAsCamera3D.x += (( __slider.Value - __bv.cameraAsCamera3D.x)/10)/2.2;
  2. __fooTarget.x += (( __slider.Value - __fooTarget.x)/5)/2.2;

Non ho utilizzato nessun Tween, ma una più semplice e performante funzione:

CODE:
  1. posizione += ((posizionefinale - posizione)/accelerazione)/inerzia;

Nel demo è possibile modificare alcuni parametri: focus, zoom e target. Quest'ultimo è la posizione del DisplayObject3D rispetto alle 99 immagini! Modificando questa posizione si noteranno cambiamenti nel movimento dell'intera scena.
Focus e Zoom sono invece proprietà dell'ambiente Papervision3D.

Interazione

Provate a cliccare sulle immagini... ;)

Post correlati

Creare un preloader generico in Actionscript 3.0

Lunedì 16 Giugno, 2008

Potrebbe sembrare un argomento scontato e ormai esaurito, eppure con Flash CS3 e la nuova gestione della classi documento (package) permesse con Actionscript 3.0, non è del tutto immediato creare un preloader funzionante. L'ultima release di Flash, infatti, gestisce il caricamento del filmato in modo diverso dalle precedenti versioni. In rete potrete trovare diverse proposte e soluzioni per ricreare un preloader "vecchio stampo". Tuttavia i vari esempi che ho trovato non mi soddisfano pienamente in quanto richiedono di alterare il filmato in modo da farlo funzionare come un preloader classico. In pratica quando si sviluppa bisogna sempre rammentare "questa cosa la devo fare così altrimenti il preload non funziona"! E per i filmati già compilati, poi?

Loader

La soluzione che ho adottato, almeno per adesso, è stata quella di creare un filmato esterno (il mio loader - vedi esempio) in grado di caricare qualsiasi altro filmato esterno, compresa un'immagine! Questa soluzione, nonostante richieda in pratica due filmati (il loader e il filamato vero e proprio), diventa economica solo se si riesce a creare un loader in grado di essere usato più e più volte; cioè in grado di caricare qualsiasi filmato, a qualsiasi risoluzione e a qualsiasi framerate.

Continua a leggere... »

Post correlati

Reflex e ReflexMe: da Classe base a Classe

Venerdì 13 Giugno, 2008

Nel post Flash CS3: creare un effetto Reflex su qualsiasi MovieClip avevamo visto com'è possibile scrivere una classe, che estende un MovieClip, per collegarla a DesignTime ad un qualsiasi MovieClip in libreria. Ho scoperto, tuttavia, che può risultare più utile ed economico fare il percorso contrario. Ho creato una classe Reflex (Reflex.as), con l'intenzione di usarla esclusivamente da codice. Ho creato questa classe pensando di passare nel costruttore il puntatore ad un MovieClip. La nuova classe Reflex contiene in sostanza lo stesso codice prima inserito nella ReflexMe, ma leggermente modificato in modo da poter funzionare espressamente da codice:

Actionscript:
  1. //
  2. import undolibrary.sfx.*;
  3. //
  4. var rx:Reflex = new Reflex( movieClipInstance );

Continua a leggere... »

Post correlati

3D CountDown con FIVe3D

Giovedì 12 Giugno, 2008

Ho scritto una classe CountDown per Actionscript 3.0. Per provarla ho creato un esempio sfruttando le capacità di rendering testuale di FIVe3D.

Clicca per aprire il filmato Flash

Download sorgente

Il sorgente countdown.zip comprende sia la classe CountDown che l'esempio (CountDownDemo) in 3D scritto FIVe3D. Nell'esempio proposto è anche possibile modificare la data finale tramite un campo testo editabile. La classe CountDown verrà inserita quanto prima in Undolibrary.

Continua a leggere... »

Post correlati

Argomenti variabili in Actionscript 3.0

Mercoledì 11 Giugno, 2008

Nel post Argomenti variabili e di default in Javascript, Actionscript e PHP avevo esposto l'uso delle tecniche di passaggio di parametri variabili e di default. Aggiungo, ora, che in Actionscript 3.0 è stata introdotta una nuova dichiarazione di parametro in grado di specificare un parametro array che accetta un qualunque numero di argomenti separati da virgola: ... (rest)

Actionscript:
  1. function sampleFunction(... mioarr):void {
  2.     for (var i:uint = 0; i < mioarr.length; i++) trace( mioarr[i] );
  3. }
  4.  
  5. sampleFunction(8, 16, 32);
  6.  
  7. // output:
  8. // 8
  9. // 16
  10. // 32

Questa tecnica non sostituisce l'uso dell'oggetto arguments, ma è utile nelle dichiarazioni di classi dove in mancanza di parametri Actionscript genera un errore. Inoltre, come indicato nel manuale:

Il parametro (rest) può avere qualsiasi nome che non corrisponda a una parola riservata e deve essere l'ultimo parametro specificato. L'uso di questo parametro rende indisponibile l'oggetto arguments. Anche se il parametro ... (rest) offre la stessa funzionalità dell'array arguments e della proprietà arguments.length, non fornisce invece una funzionalità simile a quella di arguments.callee. Prima di usare il parametro ... (rest), assicurarsi che non sia necessario utilizzare arguments.callee.

Inoltre è possibile utilizzare questa tecnica insieme alle dichiarazioni standard:

Actionscript:
  1. function sampleFunction(a:String, b:int, ... mioarr) {
  2.     for (var i:uint = 0; i < mioarr.length; i++) trace(args[i]);
  3. }
  4.  
  5. sampleFunction(4096, 16384, 128);
  6.  
  7. // output:
  8. // 16384
  9. // 128

Post correlati

Flash e Papervision3D in Javascript

Mercoledì 11 Giugno, 2008

Edward Smith ha sviluppato un wrapper in grado di sfruttare le API Flash e Papervision3D in Javascript! La libreria, AS3Wrapper, è compatibile con FireFox e con IE. Con Safari per Windows funziona mentre ho riscontrato problemi con Opera 9, sempre per Windows. Il meccanismo che sta alla base di questo progetto, e che rende possibile questa “magia”, è quello di includere nella nostra pagina HTML un contenitore Flash (AS3Wrapper.swf) che accetta comandi Javascript (AS3Wrapper.js), permettendo in pratica di costruire oggetti Flash direttamente da Javascript.

Continua a leggere... »

Post correlati

Papervision3D: effetti con perlinNoise()

Lunedì 9 Giugno, 2008

Sfruttando l'effetto generato da perlinNoise() è possibile creare effetti di increspatura e onde con Papervision3D.

Scarica il sorgente

Per compilare il sorgente avete bisogno sia di Papervision3D che di Undolibrary - che ora potete trovare come pacchetto ZIP direttamente nella sezione Download di Google Code.

Post correlati

Esperimenti con DisplacementMapFilter e perlinNoise()

Venerdì 6 Giugno, 2008

Introduco oggi un argomento interessante e vasto che ha il suo “core” nell’uso della classe DisplacementMapFilter. Questa classe permette di applicare un Filtro mappa di spostamento ad un oggetto visuale Flash (Bitmap, Sprite, etc…). Di filtri, Flash CS3, ne ha vari ed appartengono tutti alla stessa famiglia. Tuttavia il DisplacementMapFilter ha caratteristiche davvero particolari, come vedreno, che lo rendono straordinario nella generazione di effetti davvero spettacolari.

DisplacementMapFilter - clicca per aprire il filmato Flash

DisplacementMapFilter - clicca per aprire il filmato Flash

Scarica il sorgente

Continua a leggere... »

Post correlati