Quest’anno è un Natale speciale, in quanto è il primo da papà di due stupendi (e faticosissimi) gemelli!

Quest’anno è un Natale speciale, in quanto è il primo da papà di due stupendi (e faticosissimi) gemelli!

Carissimo Babbo Adobe,
nonostante abbia già ricevuto due patch per Flash CS3 (versione 9.0.2), alcuni problemini nel suo utilizzo sono apparsi come in tutti i software del mondo, soprattutto in questa release che di cambiamenti ne ha subiti davvero tanti.
1 |
Aggiungendo parentesi graffe dove non andrebbero:
1 2 | mybtn.addEventListener (MouseEvent.CLICK, function(e) { myfunc(); } ); }; // < -- chi te l'ha detto?! |
Quindi meglio usare la sintassi:
1 |

Comunque a Natale sia tutti più buoni… quindi, caro Babbo Adobe, aspettiamo con ansia futuri aggiornamenti.
FreeTextBox è un editor HTML scritto in Javascript, per ASP.NET. Questa versione, la 4.0 Beta 1, è compatibile con IE, Mozilla e FireFox su tutti le piattaforme. Come altri editor (vedi: Editor WYSIWYG per il Web) permette di impostare il suo aspetto e gli strumenti. Nonostante sia per ASP.NET, framework da me non trattato, lo segnalo per la sua gradevolezza. Tuttavia, peccato, viene fornito in due versioni: una gratuita e una a pagamento!
Finalmente con ActionScript 3.0 non abbiamo più due diverse gestioni di eventi come accadeva prima di ActionScript 2.0 (vedi: Gestione degli eventi: similitudini tra Flash e Javascript). Il metodo addEventListener(), onnipresente nella nuova architettura, permette di gestire in modo nuovo e straordinariamente pulito tutti gli eventi possibili, anche quelli personali. La nuova organizzazione in package permette di importare gli eventi che ci servono e trattarli tutti allo stesso modo:
1 2 3 4 | // Events import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.Event; |
Flash CS3 ha davvero tante novità, tra cui quella “curiosa” di indicare al momento della compilazione alcuni consigli sulla scrittura del codice. Questo accade, ad esempio, quando abbiamo a che fare con gli oggetti TextField. Mi è capitato di dover aggiungere una stringa alla fine di un campo TextField, con la classica notazione:
1 | mioTextField_txt.text += "Stringa aggiunta"; |
Ma ecco che ActionScript 3.0, al momento di compilare il filmato, mi avverte (Warning) – o consiglia:
Warning: 3551: L’aggiunta di testo a un’istanza TextField mediante += è spesso un’operazione più lenta rispetto all’uso del metodo TextField.appendText().
Fantastico! Andiamo a vedere infatti la SYNOPSIS del metodo appendText() che effettivamente dice:
Aggiunge la stringa specificata dal parametro
newTextalla fine del testo del relativo campo. Questo metodo è più efficiente rispetto a un’assegnazione addizione (+=) applicata a una proprietàtext(ad esempio<strong>someTextField.text += moreText</strong>), in particolare nel caso di un campo di testo con una quantità di contenuto significativa.
Ci fidiamo? Per sicurezza verifichiamo:
1 2 3 4 5 6 7 8 9 |
Tempo: 9360 – sulla mia macchina, in debug mode. Proviamo allora come consigliato dal compilatore:
1 2 3 4 5 6 7 8 9 |
Tempo: 8415
Niente di eccezionale… tuttavia è vero! Il metodo appendText() è più rapido e performante dell’operatore pre-incrementale (+=). Come mai? Il motivo più ovvio è il seguente: l’operatore (+=) agisce su qualsiasi tipo di dato. Inoltre in un linguaggio OO questo operatore non è strutturato come nel semplice C ma è “oggettato”. In C++, ad esempio, è possibile sovrascrivere (override) tale operatore in quanto facente parte della struttura ad oggetti del linguaggio stesso. In definitiva appendText() è più rapido in quanto il suo obiettivo è quello di “appendere” una stringa e di conseguenza non si fa tante “domande” al suo interno. L’operatore (+=), invece, deve funzionare per qualsiasi tipo di dato e quindi non è ottimizzato per le stringhe. In C, al contrario, l’operatore (+=) è una funzione a basso livello e sarà sempre più rapida di una chiamata ad una funzione.
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:

E tutto cominciò da qui… auguri al mio primo Personal Computer, come veniva pubblicizzato all’epoca che, nonostante sia ormai tecnicamente superato, rimarrà sempre insuperabile nell’animo e nel ricordo di molti!
A causa della sua capacità di comunicare con il server, l’oggetto XmlHttpRequest (XHR), usato nella tecnologia Ajax (acronimo di Asynchronous JavaScript and XML, la cui pronuncia dovrebbe essere “egiacs” anche se noi italiani preferiamo “aiacs”), ha un blocco di protezione che gli impedisce di eseguire richieste esterne al dominio in cui opera. Questa protezione è necessaria per impedire Injection Javascript (tecniche di “iniezione” di codice estremamente pericoloso con lo scopo di violare il sistema) di svariato tipo, con l’obiettivo ultimo di “irrompere” nel sistema.
Questo limite è oggi tenuto in seria considerazione e si sta pensando, in qualche modo, di risolverlo – direttamente nell’oggetto XmlHttpRequest - senza pregiudicare la sicurezza (vedi anche: Third proposal for cross-site extensions to XMLHttpRequest ).
Comunque sia la situazione oggi è la seguente:
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.
![]() |
Tutte le sezioni sono state ridisegnate con un’originale uso dei background. Da rinavigare assolutamente!
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.
![]() |
![]() |
Ho trasformato questo in un simbolo ed ho applicato due effetti nella giusta sequenza: smussatura e sfocatura:
![]() |
![]() |
Il risultato è stato:
A questo MovieClip (simbolo) ho associato una semplice classe CNeve, che crea di fatto l’intelligenza del fiocco stesso:
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 | class CNeve extends MovieClip { private var _interval; private var _maxy:Number; // function CNeve() { _interval = setInterval(this, "_move", 25); _maxy = Math.round((Stage.height+256)/2)+_getRndRange(-20, -7); } // private function _getRndRange(min:Number, max:Number):Number { var randomNum:Number = Math.floor(Math.random()*(max-min+1))+min; return randomNum; } // private function _move() { _y += _getRndRange(1, 5); _x += ((_getRndRange(-50, 50))>0) ? 1 : -1; _rotation += _getRndRange(1, 5); if (_y>_maxy) { clearInterval(_interval); } updateAfterEvent(); } } |
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:
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.
1 2 3 4 5 6 7 8 9 10 11 12 | // crea fiocco function creaFiocco() { var s = randRange(20, 100); var x = randRange(-Math.floor((Stage.width - 320) / 2), Math.round((Stage.width + 320) / 2)); var y = -Math.floor(((Stage.height - 256) / 2)) - 10; c_mc.attachMovie("neve","neve_" + index,index,{_x:x, _y:y, _xscale:s, _yscale:s, _alpha:90}); index++; if (index > 1000) { index = 1; c_mc = createEmptyMovieClip("c_mc", 2); } } |
E questo è tutto…
Dimenticavo… Auguri a tutti e Buone feste…
Ultimi Commenti
Giovambattista Fazioli: @kOoLiNuS: Tranquillo, ti posso anticipare che probabilmente WPX cleanfix sarà gratuito, e...
kOoLiNuS: @kOoLiNuS: mancava un
e un
kOoLiNuS: @Giovambattista Fazioli: mi sono iscritto, ma al momento io mio è un uso amatoriale della piattaforma...
Giovambattista Fazioli: @kOoLiNuS: Si, questo è un problema noto. Si verifica quando le tabelle in questione sono di...
kOoLiNuS: @Giovambattista Fazioli: Grazie per la patch! Però ho rilevato che su un paio di tabelle (se serve ti dico...