Articoli con Tag ‘Flash CS3’


Actionscript 3.0: tutto con l’operatore new

Sempre nell’ottica di “uniformare”, come già accaduto con gli eventi (vedi La nuova gestione degli eventi di Flash CS3 e Flash CS3: la nuova gestione degli eventi), una delle tante novità presenti in Actionscript 3.0 è la scomparsa di tutti quei metodi ad hoc dedicati alla creazione di particolari oggetti, come: createEmptyMovieClip() o il famosissimo attachMovie(). Con Actionscript 3.0 l’operatore new è sufficiente a svolgere tutte le operazioni di creazione. Un nuovo MovieClip, ad esempio, viene creato (runtime) con il seguente codice:

1
2
var mioClip:MovieClip = new MovieClip();
addChild(mioClip);

image Ma veniamo al dunque! Se ho un simbolo nella libreria e voglio aggiungerlo runtime come procedo se attachMovie() è scomparso? La soluzione non è molto dissimile da quello che accadeva in Actionscript 2.0. Prima di tutto bisogna andare nel pannello di libreria, selezionare il simbolo e aprire la finestra proprietà. A questo punto spuntare la casella di concatenamento Esporta per ActionScript – come accadeva in Flash 8. Un simbolo di libreria ha sempre come Classe base flash.display.MovieClip, ma questo non ci interessa granchè. La cosa interessante, invece, è il parametro Classe che viene impostato di default (quando si spunta Esporta per ActionScript) con il nome del simbolo. Quello che è importante sottolineare è che questa è una nuova modalità di Flash CS3 (e quindi ActionScript 3.0). Il simbolo, per essere esportato, deve avere una Classe di riferimento. La curiosità risiede nel fatto che non siamo costretti a creare per forza una nostra Classe (estesa da flash.display.MovieClip), anche se potremmo farlo.

Continua...

La nuova gestione degli eventi di Flash CS3

Ne avevo già parlato in Flash CS3: la nuova gestione degli eventi. Torno sulla questione per sottolieare la differenza di questo nuovo approccio rispetto alle precedenti versioni di ActionScript. Schematizzando abbiamo una situazione generale di questo tipo:

addEventListener

Ogni oggetto che supporta degli eventi, in definitiva, espone sempre il metodo addEventListener(). Nella documentazione, tra l’altro, leggiamo:

Novità per i listener di eventi in ActionScript 3.0

[...] Per aggiungere listener di eventi in ActionScript 2.0 si usa talvolta addListener() e talvolta addEventListener(), mentre in ActionScript 3.0 si usa addEventListener() in tutte le situazioni.
[..]

La gestione degli eventi, poi, è standardizzata anche a livello di listener vero e proprio. Tutte le “funzioni” di ascolto, infatti, hanno la seguente struttura:

1
2
3
function eventResponse(eventObject:EventType):void {
// Le azioni di risposta agli eventi vanno definite qui.
}

EvenType è sempre un oggetto della classe Event o una sua sottoclasse. Questo permette di ottenere sempre infomazioni specifiche per il particolare evento oltre a manipolare proprietà standard come target o currentTarget.

Un’importante differenza con le precedenti versioni di Actionscript, riguardo ai listener, è che:

In ActionScript 2.0, i listener di eventi possono essere funzioni, metodi oppure oggetti mentre in ActionScript 3.0 possono essere listener di eventi solo funzioni o metodi.

Insomma, avendo usato per un bel po’ di tempo la struttura ad eventi delle precedenti versioni di Flash, devo dire che questo nuovo approccio è davvero piacevole. È un po’ che sviluppo con Actionscript 3.0 e, dopo un piccolo smarrimento iniziale (giusto per ritrovare ciò che prima era scontato) ora non capisco proprio come facevo a sopportare il “vecchio” metodo degli eventi delle precedenti versioni.

Continua...

Google Maps component per Flash

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...

Lettera a Babbo Adobe: Flash CS3, qualche baco e difetto

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.

  • L’editor ActionScript, ad esempio, risulta lento e scattoso! Considera, caro Babbo Adobe, che la mia macchina ha 8Gbyte di Ram e un Intel core duo quad!
  • Durante la formattazione automatica, righe di codice come questa qui sotto, vengono “fraintese” e riformattate male:
1
mybtn.addEventListener (MouseEvent.CLICK, function(e) { myfunc(); } );

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
conn_btn.addEventListener (MouseEvent.CLICK, _onClick );
  • Le finestre docket, almeno nell’implementazione su Windows Vista, ogni tanto spariscono sotto altri pannelli… La finestra di Aiuto, la guida insomma, crea qualche problema quando si prova un progetto. Quest’ultimo, infatti, scompare dietro agli altri pannelli… mistero! Tuttavia questo difetto, come altri, non è sempre riproducibile.
  • Anche i componenti hanno strani comportamenti: a volte vengono mostrati, in design-time, come rettangoli bianchi… continuando comunque a funzionare a runtime!
    Missing Components
  • L’anterprima Scale9Grid, indicata come nuova nella documentazione e in grado di mostrare gli oggetti ridimensionati correttamente anche a design-time, continua ad essere afflitta dagli stessi problemi della precedente versione! Peccato!
    Scale9Grid

Comunque a Natale sia tutti più buoni… quindi, caro Babbo Adobe, aspettiamo con ansia futuri aggiornamenti.

Continua...

Flash CS3: la nuova gestione degli eventi

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;

Continua...

Flash CS3: TextField.appendText()

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 newText alla 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
import flash.utils.getTimer;

var i:uint=0;
var s:int = getTimer();
for(i; i < 10000;i++) {
    text_txt.text += "Ciao";
}
var f:int = getTimer();
trace(f-s);

Tempo: 9360 – sulla mia macchina, in debug mode. Proviamo allora come consigliato dal compilatore:

1
2
3
4
5
6
7
8
9
import flash.utils.getTimer;

var i:uint=0;
var s:int = getTimer();
for(i; i < 10000;i++) {
    text_txt.appendText ("Ciao");
}
var f:int = getTimer();
trace(f-s);

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.

Continua...

Flash CS3: comunicazione con un Web Server

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...

10 motivi per passare ad Adobe Flash CS3

2007-11-21_170314 Per alcuni sviluppatori basta sapere che esiste una nuova versione del loro pacchetto di sviluppo preferito per correre ad acquistare l’aggiornamento. Altri, e non a torto, mantengono una maggiore calma e "pretendono" di conoscere gli effettivi miglioramente della nuova versione prima di modificare le proprie abitudini. Nel caso di Adobe Flash CS3 non c’è molto da attendere, visto gli innumerevoli cambiamenti che ha subito il pacchetto da quando Macromedia è stata acquisita da Adobe.
Ecco, quindi, 10 semplici, ma importanti, motivi che, a mio personale parere, bastano per convincersi ad eseguire l’aggiornamento ad Adobe Flash CS3. Mi soffermerò, ovviamente, solo sulle caratteristiche che mi hanno colpito personalmente; questo non vuole essere un elenco esaustivo di tutte le numerose novità introdotte con la suite CS3, solo un volo radente per anticipare qualche features della versione CS3.

1. Installazione

L’installazione è gradevole e rapida, rispetto alle precedenti versioni. Si integra, tra l’altro, con tutti i prodotti Adobe (Dreamweaver CS3, Photoshop CS3 extended, ecc…) il che rende le operazioni di installazione/rimozione ed aggiornamento un vero piacere.

2. Compatibilità a ritroso

Una questione spesso sottovalutata, ma sempre tenuta in considerazione nella storia di Flash: la possibilità di gestire le precedenti versioni del prodotto. In Flash CS3 ci sono tutti gli strumenti sia per migrare che per manipolare le precedenti versioni dei nostri filmati. Troviamo questa possibilità sia nel debug (un debug separato per Actionscript 2.0 e Actionscript 3.0) sia in fase di compilazione del filmato. Scrivere da subito applicazioni Flash in Actionscript 3.0 potrebbe essere controproducente in determinati contesti. Se il vostro sito target ha un traffico notevole potrebbe capitare che molti utenti non hanno ancora installato le ultime versioni del Player Flash per il browser e quindi non vedrebbero il filmato. Tuttavia, come già detto, Flash CS3 permette di sviluppare applicazioni Flash mantendedo la compatibilità a ritroso e quindi non vedo in questo un grosso ostocalo nell’upgrade del prodotto.

3. Interfaccia grafica e IDE

Pannello ridotto ad icona Nuovo pannello Flash CS3 L’IDE di Flash CS3 (come quella di Dreamweaver CS3) è stata rivisitata al meglio. I pannelli (vedi figura qui a sinistra), spesso scomodi nelle precedenti versioni, sono stati completamente ridisegnati e adesso il loro uso è notevolemente meno invasivo. Pannelli in modalità icona Inoltre la possibilità di ridurre ad icona i pannelli (vedi figura qui a destra) è una vera trovata che rende l’interfaccia gradevole e funzionale. Quando un pannello si trova in modalità icona occupa molto meno spazio e con un semplice click è possibile aprire il pannello principale prima sempre visibile.
Tutta l’IDE, insomma, è stata rivista compresa la zona centrale con la finestra per l’editing grafico e del codice. Non vi segnalo tutti i cambiamenti altrimenti vi rovinerei la sorpresa…

Nuova IDE Flash CS3

Continua...

Fullscreen in Flash dal browser

Flash ha sempre supportato la modalità a schermo interno (fullscreen) sia nel Player stand-alone che nel proiettore. Questa modalità ancor oggi viene pienamente supportata e non ha subito modifiche. Adobe ha invece recentemente introdotto la possibilità di attivare il fullscreen direttamente nei filmati visualizzati nel browser. È stata introdotta una nuova e semplice funzionalità ActionScript che lavora sia con i player stand-alone che con i player browser. Per rendere il fullscreen fuzionante bisogna operare anche lato HTML, aggiungendo un nuovo parametro allowFullScreen nei TAG &lt;object&gt; ed &lt;embed&gt;. Tutto il resto è demandato al motore interno di Flash.
Questa nuova funzionalità ha comunque alcune restrizioni che bisogna conoscere, prima tra tutte l’uso del Flash Player versione 9.0.28.0 o superiore. Inoltre, ricapitolando:

  • Sul Browser dev’essere installata la versione del Player 9.0.28.0 o superiore
  • I developer devono aggiungere un nuovo parametro allowFullScreen nei Tag &lt;object&gt; e &lt;embed&gt;. Questo parametro è impostato normalmente a false e non permette il fullscreen. Per permettere il fullscreen bisogna esplicitamente impostarlo a true.
  • Un Box di dialogo verrà mostrato quando si entra in modalità fullscreen e indicherà all’utente come uscire da tale modalità. Questo Box sarà visibile per pochi secondi, passati i quali scomparirà da solo.
  • L’attivazione del fullscreen da ActionScript può avvenire solo in risposta di un click del mouse o tramite la pressione di un tasto, qualsiasi altra modalità verrà ignorata in ActionScript 2.0 e scatenera una eccezione throw in ActionScript 3.0.
  • Durante la modalità di fullscreen non è possibile utilizzare la tastiera. L’utente finale non può quindi inserire o modificare testi. L’unica risposta alla tastiera è riservata alla combinazione di tasti usata per uscire dalla modalità di fullscreen (la pressione del tasto ESC)

Codice ActionScript

Il codice necessario per impostare il fullscreen è semplicissimo e sfrutta l’oggetto Stage discusso su questo Blog in StageExt Class: filmati ridimensionabili in Flash:

1
Stage["displayState"] = "fullScreen";

Continua...



Stop SOPA