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)
Categoria ‘Actionscript 3.0’
Argomenti variabili in Actionscript 3.0
Flash e Papervision3D in Javascript
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.
Papervision3D: effetti con perlinNoise()
Sfruttando l’effetto generato da perlinNoise() è possibile creare effetti di increspatura e onde con Papervision3D.
Esperimenti con DisplacementMapFilter e perlinNoise()
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.
Actionscript 3.0: public, protected, private e internal
Con AS3 sono state introdotte nuove “istruzioni” per definire proprietà e metodi (pubblici o privati). Alcune, come private – già presente in AS2 – ha cambiato comportamento (private si comportava in AS2 come ora si comporta protected, in AS3 private è davvero “privata”!) proprio a causa dell’introduzione di una sintassi più OO rispetto alle precedenti versioni. Meglio schematizzare, quindi, dalla più “pubblica” alla più “privata”:
- public
tutti possono accedervi - protected
vi può accedere la classe madre e le sottoclassi - private
solo la classe che definisce - internal
solo all’interno dello stesso package
Flash CS3: creare un effetto Reflex su qualsiasi MovieClip
Sfruttando una notevole caratteristica di Actionscript 3.0 (vedi Actionscript 3.0: tutto con l’operatore new) ho creato una classe ReflexMe in grado di generare un effetto “riflessione” su un qualsiasi MovieClip presente in libreria.
Il sorgente fa parte del pacchetto undolibrary – presente su GoogleCode – ma se volete potete scaricare il singolo file ReflexMe.as.
Effetti sulle Bitmap con perlinNoise()
La classe BitmapData permette di applicare in modo semplice effetti utilissimi per svariati scopi. Avevamo già visto come creare un effetto “nebbia tv” con poche righe di codice (Flash CS3: creare effetto nebbia TV in 1 secondo). Ora ci occuperemo di un altro effetto “spettacolare” che, come vedremo in seguito, permette di realizzare degli interessantissimi effetti grafici, come nell’esempio mostrato qui sotto: variate i parametri per osservare i differenti effetti, cliccando con il mouse sull’immagine generata questa può essere spostata.
Per l’occasione ho anche aggiunto un nuovo semplice componente (Check) in Undolibrary! Quindi aggiornate il vostro repository SVN. Il sorgente è disponibile qui: MapEffect.zip
undolibrary: libreria Actionscript 3.0 su Google Code
Ho aperto un progetto su Google Code: undolibrary. Per adesso, questa libreria, contiene un solo componente (Knob - manopola) da utilizzare tramite Actionscript 3.0. Ne parlo in quanto questo componente è propedeutico ad una serie di tutorial/sorgenti in Flash che volevo rendere disponibili.
Google Code
Prima di tutto introduco il concetto di Google Code per chi ne fosse estraneo. Google Code è un servizio gratuito messo a disposizione da Google con lo scopo di condividere codice ma, soprattutto, di condividerlo in modo collaborativo e con un sistema di versioning (subversion) e wiki utilissimo a gruppi di sviluppo (soprattutto opensource) o a singoli programmatori. Sul sito Google Code troviamo:
- Accesso ai progetti opensource propri di Google (come Google Maps API, Google Translate API, etc…)
- Il servizio di hosting per aprire un proprio progetto
È possibile cercare progetti di altri, con un motore di ricerca appositamente costruito. Molti gruppi di sviluppo, composti da team che sono ubicati in zone geografiche distanti, sfruttano questa condivisione per lavorare insieme, garantiti da un sistema di versioning ormai assodato (checkout/checkin per non sovrapporsi o il supproto per creare dei branch – spinoff di progetti). Librerie e tools come Papervision3D, Tweener o AS3corelib, ad esempio, sono ubicati proprio su Google Code godendo da un lato di un hosting di sviluppo e dall’altro di un accesso pubblico per il download dei sorgenti e della documentazione.
Punto importante, poi, è la possibilità – aperto un progetto – di impostare gli accessi e la visualizzazione. Se volete potete proteggere il vostro lavoro o renderlo del tutto privato, invece che pubblico.
Creare eventi personalizzati in Actionscript 3.0
Creare eventi personalizzati in Actionscript 3.0 è semplicissimo. Usarli, poi, permette di utilizzare il metodo addEventListener() e rendere il nostro oggetto del tutto standard. Se abbiamo creato una classe, ad esempio Bottone, è corretto associare a questa uno o più eventi tramite una apposita classe (derivata dalla classe Event) BottoneEvent. Potremmo realizzare tutti gli eventi che interessano il funzionamento del nostro oggetto: il click, il mouse over, o un qualsiasi altro evento! Definendo anche delle nostre personali costanti. Lo scheletro – generico – di una classe evento personalizzata è:
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 | package { /* ** @name : BottoneEvent.as ** @description : Classe derivata da Event per gestire un proprio evento personalizzato ** @author : =undo= ** @web : http://www.undolog.com ** @email : g.fazioli@undolog.com */ import flash.events.*; public class BottoneEvent extends Event { public static const MIOEVENTO:String = 'pluto'; // codice qualsiasi, anche 'mioevento' in minuscolo public var Valore:Number = NaN; /* ** @name : BottoneEvent ** @description : constructor */ public function BottoneEvent ( type:String, v:Number, bubbles:Boolean=false, cancelable:Boolean=false ):void { super(type, bubbles, cancelable); this.Value = v; } /* ** @override */ override public function clone():Event { return new KnobEvent(this.type, this.Value, this.bubbles, this.cancelable); } } } |
AS3Corelib: libreria per codifica MD5, SHA1 e JPG/PNG Encoder
AS3corelib project è una libreria scritta in ActionScript 3 che contiene una serie di classi e utilities per estendere lo sviluppo con ActionScript 3. È incluso il supporto per la codifica MD5 e SHA 1, encoders per JPG e PNG, e la serializzazione JSON per stringhe, numeri e Date APIs. Questa libreia risulta davvero utile nello sviluppo di applicazioni Flash e riesce ha dare il meglio di sè in accoppiata con Adobe AIR!
Dei vari package presenti i più interessanti sono com.adobe.crypto e com.adobe.images. Il primo permette di gestire le codifiche MD5, SHA1, SHA224 e SHA256, in modo davvero semplice: tramite il metodo hash() si passa la stringa-sorgente e viene restituita la codifica! Il pacchetto images permette addirittura di ottenere l’encoder JPG o PNG a partire da una semplice bitmap Flash!
1 |
Il risultato ByteArray rappresenta l’encoding JPG che, Flash permettendo, può essere salvato direttamento su disco! Per saperne di più potete seguire questo tutorial video su come memorizzare un’immagine PNG – a partire da un oggetto video – su disco tramite as3corelib.








Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...