Adobe AIR 1.0, Adobe Flex 3.0 e il nuovo Adobe Open Source

Lunedì 25 Febbraio, 2008

Adobe AIR Grandi novità per gli sviluppatori AIR. È stata rilasciata finalmente la versione 1.0! Fine della beta quindi! Nuove SDK (vitali per la compilazione in ambienti come Aptana Studio, Eclipse, etc…) e aggiornamento delle estensioni per Dreamweawer e Flash CS3 Professional in italiano! Fino a ieri, infatti, non era possibile sviluppare un’applicazione AIR con Flash CS3 Professione in italiano. Ora il nuovo menu per la creazione di RIA AIR è disponibile e funzionante! Potete trovare tutte gli aggiornamenti (fix della sicurezza ed estensioni) direttamente sul sito.

Adobe Open Source Altra novità è il lancio ufficiale di Adobe Open Source, il nuovo sito che terrà traccia di tutte le novità nell’ambito dell’open source Adobe e non solo. Diventa questo, quindi, il punto di riferimento degli sviluppatori che potranno travare interessanti contributi con demo, codici sorgente e molto altro, come il supporto per i progetti open Tamarin e BlazeDS.

Prossimamente vedremo come sviluppare una semplice applicazione AIR con Flash e Dreamweaver!

Post correlati

Adobe AIR: l’incompreso

Giovedì 7 Febbraio, 2008

Adobe AIRAlcuni, e non a torto, discutono sull’utilità di Adobe AIR, Adobe Integrated Runtime (ex Apollo) proposto da Adobe. Di che stiamo parlando? Dopo tutto AIR è ancora una beta (l’ultima release è del 12/12/2007 - la beta 3) e il suo successo, vedremo se compreso o meno, dipende da molti fattori.

Continua a leggere… »

Post correlati

Actionscript Flash contest: erase tool

Domenica 3 Febbraio, 2008

Premetto subito: non si vince nulla! A parte l'orgoglio - caso mai - di aver risolto il problema.

QUEST - DOMANDA

Come si realizza un tool per cancellare, eliminare, ripulire, una "porzione" della grafica disegnata con le API di Actionscript 3.0?

Con Actionscript 3.0 alcuni oggetti visivi, come i MovieClip o gli Shape, espongono la proprietà graphics, un puntatore ad un altro oggetto che "serve" tutte le funzioni grafiche di disegno runtime. Ad esempio è possibile sviluppare una semplice applicazione di disegno. Questo oggetto graphics permette di disegnare qualsiasi cosa, ad esempio su un oggetto Shape, in modo semplice e rapido. Il problema è che una volta disegnato qualcosa è possibile ripulire tutto ma non una singola parte.

Disegnare una linea è facilissimo:

Actionscript:
  1. var myShape:Shape = new Shape();
  2. addChild(myShape);
  3. //
  4. myShape.graphics.lineStyle(2,0xff0000,1);
  5. myShape.graphics.moveTo(0,0);
  6. myShape.graphics.lineTo(100,100);

Disegnato qualcosa è possibile ripulire tutto con la semplice chiamata al metodo clear():

Actionscript:
  1. myShape.graphics.clear();

Ma se voglio "cancellare" solo un punto? Oppure dalle coordinate 50,50 a 100,100?

Cercando su Internet ho trovato numerosi esempi di "applicazioni di disegno" e, in effetti, nessuna supporta o propone lo strumento "cancella".

Avete qualche soluzione?

Post correlati

Yahoo! ASTRA: suite di componenti per Flash e Flex

Venerdì 1 Febbraio, 2008

image Yahoo! ha appena rilasciata ASTRA, una suite di componenti per Adobe Flash e Flex. Devo dire che, almeno per quanto riguarda i componenti per Flash, ho avuto una mezza delusione (se non totale). Il più interessante, forse, è il TabBar... il resto lascia molto a desiderare. Sembrano componenti sviluppati per qualche loro progetto - interno - e ora rilasciati come prodotto open! Forse, in Yahoo!, si sono già allineati alle politiche Microsoft... visto che proprio oggi la software house fondata dal Bill ha offerto 44,6 miliardi di dollari per acquistare Yahoo!! 44,6 miliardi, non ho scritto male!

Tuttavia fatevi un giro sul sito dove si trovano svariate risorse utili. Confidiamo nel futuro prossimo venturo.

Post correlati

Classi, Oggetti e Istanze

Martedì 29 Gennaio, 2008

Ho notato spesso confusione quando si parla di Classi, Oggetti ed Istanze. Chi non è particolarmente istruito sulla programmazione ad oggetti spesso confonde il vero significato di questi termini. Sapevo, tuttavia, che esistono due scuole di pensiero riguardo alla definizione di Classe e Oggetto. A me piace la "scuola" che indica la Classe come definizione di un possibile Oggetto e, quindi, l'Oggetto come Istanza della Classe.

Sembra banale, tuttavia mi è capitato - discorrendo con altri - di trovarmi in "conflitto" (per così dire) e poi cadere in equivoci, quando si usano questi termini, partendo casomai dal presupposto che "l'altro" li intenda esattamente come noi.

Io la vedo in questo modo; una Classe è una definizione! Viene appunto definita una classe di possibili oggetti. La Classe è l'insieme di metodi e proprietà (se volete possiamo aggiungere anche gli eventi - che altro non solo che speciali metodi...) che possiederà l'oggetto.

Ad esempio quando scriviamo in Actionscript, o qualsiasi altro linguaggio ad oggetti:

Actionscript:
  1. class MiaClasse {
  2.     function MiaClass() {}
  3.     function MioMetodo() {}
  4. }

Abbiamo definito una Classe e non un Oggetto. Al limite abbiamo "definito" un "possibile" oggetto. Potremmo addirittura sostenere, e non a torto, che l'Oggetto esiste a runtime mentre la Classe no (in verità esistono Classi dinamiche che possono essere definite - e poi usate per creare oggetti - anche a runtime). Escludo le classi statiche, ovviamente che - alla fine - altro non sono che sotto-istanze (o istanze nascoste) e quindi oggetti veri e propri.

Quando invece abbiamo:

Actionscript:
  1. var mioOggetto:MiaClasse = new MiaClasse();

Ecco che mioOggetto è una istanza di MiaClasse()! Cioè mioOggetto è un Oggetto - appunto - di tipo MiaClasse().

Ne deriva, proprio nella filosofia ad oggetti, che di Oggetti di tipo MiaClasse() ne posso avere quanti ne voglio, cosa che non può essere - per la definizione stessa - di MiaClasse(). Ad esempio, se vale ed ha senso la relazione:

Actionscript:
  1. var mioOggetto_1:MiaClasse = new MiaClasse();
  2. var mioOggetto_2:MiaClasse = new MiaClasse();
  3. var mioOggetto_3:MiaClasse = new MiaClasse();
  4. ...
  5. var mioOggetto_n:MiaClasse = new MiaClasse();

Non ha significato:

Actionscript:
  1. class MiaClasse {
  2.     function MiaClass() {}
  3.     function MioMetodo_2() {}
  4. }
  5.  
  6. class MiaClasse {
  7.     function MiaClass() {}
  8.     function MioMetodo_2() {}
  9. }
  10.  
  11. class MiaClasse {
  12.     function MiaClass() {}
  13.     function MioMetodo_3() {}
  14. }

Istanza e Oggetto, quindi, coincidono e sono usate alternativamente per lo stesso significato in diversi contesti.

Probabilmente non frega molto a nessuno... questione di esigenze di completezza... :)

Post correlati

Google Maps component per Flash

Venerdì 25 Gennaio, 2008

AFComponents UMAP

Google ha reso disponibile le API - in Javascript - per inserire le sue mappe in qualsiasi sito Web. Viediamo come realizzare la stessa cosa con Flash!

image Partiamo da un componente gratuito, UMAP (Universal ActionScript 3.0 Mapping API  - integrated with Google Maps), sviluppato da AFComponents, una società verticalizzata su componenti per Flash/Flex davvero interessanti e a prezzi accessibili. Sul sito, dove è necessario registrarsi per usufruire dei download gratuiti, sono presenti anche le versioni di UMAP per ActionScript 2.0: G MAP Ver.2.6.1. In questo caso noi analizzeremo la versione 0.4 Beta di UMAP per ActionScript 3.0 (all'interno del pacchetto c'è anche il componente Flex). Questa che andremo a vedere è - evidentemente - una versione beta e manca, quindi, di alcune funzionalità presenti nella versione per Actionscript 2.0 (G MAP Ver.2.6.1). Tuttavia, gurdando al futuro, mi sembra più interessante focalizzare l'attenzione su questa release; le ho provate entrambe e, nonostante la maggiore completezza della release per Actionscript 2.0, la versione beta per Actionscript 3.0 è notevolmente più performante.

Continua a leggere... »

Post correlati

Flash CS3: comunicazione con un Web Server

Venerdì 14 Dicembre, 2007

ActionScript 3.0 introduce tutta una serie di formidabili strumenti di comunicazione, alcuni totalmente nuovi, altri rivisitati e migliorati rispetto alla precedente versione di ActionScript. Cominciamo a vedere come cambia il modo di interagire con un Web Server nel caso di una semplice comunicazione tra Flash e una pagina PHP con risposta in XML. Prima di tutto l'oggetto XML non esiste più! In ActionScript 3.0 sono stati introdotte nuove classi, alcune delle quali dedicate alla "retrocompatibilità".

Nota: la classe XML (insieme alle classi correlate) di ActionScript 2.0 è stata rinominata XMLDocument e spostata nel pacchetto flash.xml. È inclusa in ActionScript 3.0 al fine di assicurare la compatibilità con le versioni precedenti.

In ActionScript 2.0 la comunicazione con un Web Server veniva spesso risolta sfruttando l'accoppiata degli oggetti LoadVars e XML, usando il metodo sendAndLoad() dell'oggetto LoadVars (vedi: Flash: LoadVars e XML per inviare dati in POST). Ora le cose cambiano, ma basta solo abituarsi ai nuovi nomi ed oggetti. Come indicato nel manuale, infatti:

Continua a leggere... »

Post correlati

Il nuovo sito Adobe.it

Venerdì 7 Dicembre, 2007
Adobe.it

Il sito Adobe.it si rinnova, si riveste cancellando l'ibrido Macromedia-Adobe realizzato subito dopo l'acquisizione della software house di Flash! Impaginazione orginale (a battuta a sinistra), uso di DHTML e Flash, ovviamente.

image Photoshop

Tutte le sezioni sono state ridisegnate con un'originale uso dei background. Da rinavigare assolutamente!

Post correlati

Creare un fiocco di neve in Flash

Giovedì 6 Dicembre, 2007

Alcuni lettori mi hanno chiesto come è stato creato il fiocco di neve, così realistico, del Widget natalizio. Chi ha scaricato il sorgente probabilmente già lo sa... comunque è stato davvero semplice. Prima di tutto ho selezionato lo Strumento Pennello in Flash ed ho disegnato un punto.

Fiocco di neve Fiocco di neve

Ho trasformato questo in un simbolo ed ho applicato due effetti nella giusta sequenza: smussatura e sfocatura:

Fiocco di neve Fiocco di neve

Il risultato è stato: Fiocco di neve

A questo MovieClip (simbolo) ho associato una semplice classe CNeve, che crea di fatto l'intelligenza del fiocco stesso:

Actionscript:
  1. class CNeve extends MovieClip {
  2.     private var _interval;
  3.     private var _maxy:Number;
  4.     //
  5.     function CNeve() {
  6.         _interval = setInterval(this, "_move", 25);
  7.         _maxy = Math.round((Stage.height+256)/2)+_getRndRange(-20, -7);
  8.     }
  9.     //
  10.     private function _getRndRange(min:Number, max:Number):Number {
  11.         var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min;
  12.         return randomNum;
  13.     }
  14.     //
  15.     private function _move() {
  16.         _y += _getRndRange(1, 5);
  17.         _x += ((_getRndRange(-50, 50))>0) ? 1 : -1;
  18.         _rotation += _getRndRange(1, 5);
  19.         if (_y>_maxy) {
  20.             clearInterval(_interval);
  21.         }
  22.         updateAfterEvent();
  23.  
  24.     }
  25. }

Il metodo _move() contiene l'intelligenza del fiocco, ovvero la funzione di caduta, estremamente semplice. Variando la funzione randomica _x += ((_getRndRange(-50, 50))>0) ? 1 : -1;, ad esempio inserendo un _getRndRange(-550, 50), si può aggiungere un effetto effetto vento, cioè i fiocchi cadono con una pendenza particolare. In particolare si possono mandare i fiocchi a destra e a sinistra usando un codice di questo tipo:

Actionscript:
  1. _x += ((_getRndRange( _getRndRange(-350, -50), _getRndRange(50, 350) ))>0) ? 1 : -1;

La rotazione (_rotation += _getRndRange(1, 5);), poi, conferisce un ulteriore dettaglio al fiocco stesso.
Quando creo un fiocco (vedi funzione creaFiocco() più sotto) ho aggiunto anche un alpha=90 e uno scale randomico, per avere fiocchi di neve di diverse dimensioni.

Actionscript:
  1. // crea fiocco
  2. function creaFiocco() {
  3.     var s = randRange(20, 100);
  4.     var x = randRange(-Math.floor((Stage.width - 320) / 2), Math.round((Stage.width + 320) / 2));
  5.     var y = -Math.floor(((Stage.height - 256) / 2)) - 10;
  6.     c_mc.attachMovie("neve","neve_" + index,index,{_x:x, _y:y, _xscale:s, _yscale:s, _alpha:90});
  7.     index++;
  8.     if (index> 1000) {
  9.         index = 1;
  10.         c_mc = createEmptyMovieClip("c_mc", 2);
  11.     }
  12. }

E questo è tutto... ;) Dimenticavo... Auguri a tutti e Buone feste... ;)

Post correlati

Orologio analogico in Flash

Martedì 4 Dicembre, 2007
Loading Flash Player...

Oggi propongo un'interessante variante del "classico" orologio analogico in Flash. Questa versione contiene una transizione Tween all'avvio del filmato. Mi sono ispirato al Gadget presente in Windows Vista che esegue, appunto, questo bel effetto all'avvio.
Il codice è scritto in Actionscript 2.0 ed è stato compilato con il nuovo Adobe Flash CS3. Questo a dimostrazione che la nuova suite CS3 è pienamente compatibile con le precedenti versioni di Flash, un punto estremamente importante per chi ha deciso di prendere in considerazione l'aggiornamento del prodotto.
Per il sorgente cliccate qui.

Post correlati