Actionscript 3.0: tutto con l’operatore new

Giovedì 31 Gennaio, 2008

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:

Actionscript:
  1. var mioClip:MovieClip = new MovieClip();
  2. 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 a leggere... »

Post correlati

Addio IE7, seguito da Sage: leggere i feed RSS su Windows

Mercoledì 30 Gennaio, 2008

Sinceramente le ho provate tutte! Non mi andava di usare un'applicazione esterna per leggere i feed RSS! Pensavo (e mi sono ricreduto) che avendo già un browser aperto fosse scomodo legarsi ad una diversa applicazione.

Così ho iniziato con il lettore RSS presente in Internet Explorer 7. Ma da quando ho installato Windows Vista mi è negato visualizzare i feed... problemi di protezione. Se "sblocco" IE7, a tempo debito, mi cominiciano ad apparire "alert" sparsi (un po' da Windows e un po' dal buon Norton 360) che mi invitano a ripristinare le impostazioni di protezione del browser in modo corretto, pena essere "bucato" da mezzo mondo. Insomma, con IE7 - almeno su Windows Vista - non è proprio possibile leggere in santa pace i feed RSS.

Abbandono IE7 (era ora!) e promuovo il buon FireFox come browser predefinito (era davvero ora!). imageInstallo quindi Sage, una estensione per FireFox. Semplice... Forse anche troppo!image Diciamo pure "limitata". Comunque sia, oggi, ho scaricato FeedReader, versione 3.12, uno dei più noti, almeno dando uno sguardo in giro per il Web. Fantastico! Un nuovo mondo davvero. Segnalo anche questo lettore, sempre per Windows, FreeDeamon, secondo me fatto molto bene... anche se per certi versi preferisco FeedReader.

image

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

La nuova gestione degli eventi di Flash CS3

Lunedì 28 Gennaio, 2008

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:

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

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.

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

I nuovi strumenti di Adobe Photoshop CS3 Extended

Mercoledì 23 Gennaio, 2008

Adobe Photoshop CS3 Extended

Chi ha la fortuna come me di possedere il nuovo Adobe Photoshop CS3 - versione Extended - si sarà "grogiolato" a vedere tutte le novità di questa nuova release. Tra le tante novità presenti nella versione 10.0.1 due in particolare mi hanno colpito per la loro estrema utilità. Il primo è lo strumento di selezione rapida:

image

Questo permette, ad esempio, di "scontornare" un oggetto in modo semplice ed efficace. Una volta selezionato basta cliccare sulla parte dell'immagine che vogliamo catturare e al resto pensa lui. È possibile, durante la selezione, rimuovere eventuali selezioni che non ci soddisfano, con il solito tasto Alt (su Windows - quello usato anche per elimnare parti di selezione con gli altri tool). Inoltre, nella toolbar superiore, è possibile regolare l'ampiezza del "pennello" di selezione, sino ad arrivare ad operare pixel per pixel.

Questa funzionalità si accoppia in modo perfetto con la seconda novità presente in Adobe Photoshop CS3: migliora bordo, accessibile dal menu Selezione (Alt+Ctrl+R).

Migliora bordo

Data una selezione, questo strumento permette di eseguire tutta una serie di operazioni davvero utili e interessanti, con un anteprima in tempo reale regolabile trmite quelle immagini che vedete in fondo alla finestra qui sopra. Oltre ad essere utile per migliorare i bordi durante le operazioni di scontorno e selezione, permette anche di effettuare rielaborazioni di semplici immagini, come quella mostrata qui sotto:

Migliora bordo

Dalla grezza e "quadrata" immagine di sinistra, grazie all'uso di Migliora bordo si è arrivati in un attimo alla figura di destra.

Vedi Video

Post correlati

Restyling e Rebloging

Mercoledì 23 Gennaio, 2008

Pensieri Sottili

Con il nuovo anno è sempre piacevole rinfrescare gli ambienti, anche quelli virtuali dei Blog. Ho rivisto lo sfondo grafico di Undolog.com, che ora è estremamente più armonico.

Più complesso è stato spostare Pensieri Sottili da Blogger a WordPress! Ma alla fine il risultato è stato davvero gratificante!

Post correlati

FireFTP: un client FTP per FireFox

Mercoledì 9 Gennaio, 2008

logo128 Le cose semplici, a volte, funzionano meglio di quelle apparentemente migliori ma complesse. Personalmente uso spessissimo applicazioni FTP, sia come client desktop veri e propri che come strumenti presenti all'intero di altre applicazioni: come Adobe Dreamweaver CS3 o UltraEdit. Come client vero e proprio ho acquistato, da tempo, FTP-Voyager, arrivato adesso alla versione 14.1. Nonostante l'ottima qualità del prodotto, FTP-Voyager si pianta quando scorre una cartella con molti file. Mi sono trovato, infatti, nella spiacevole situazione di dover eseguire un backup per un cliente che aveva collezionato una quantità nauseabonda di file all'interno di una cartella. Per fortuna ho avuto l'idea di installare questa estensione per FireFox (già consigliata da Yuma) che ha risolto il problema, altrimenti avrei dovuto "zippare" la cartella e tirarla giù come file.

FireFTP permette delle configurazioni minimali ma sufficienti nella maggiornza dei casi. Ottima la possibilità di eseguire un confroto tra file e cartelle remote, anche se in questa versione il confronto avviene esclusivamente sulla presenza o meno del file.

Insomma, FireFTP non sarà il client ftp definitivo ma averlo può essere davvero molto utile, visto poi che è gratuito a differenza di FTP-Voyager!

Post correlati

EditArea: un rich Sourcecode Editor in Javascript

Martedì 8 Gennaio, 2008

EditArea è un modo diverso di utilizzare le funzioni di editing online permesse dall'HTML. Questa tecnica, utilizzata il più delle volte per creare Editor WYSIWYG, viene sfruttata in questo caso per fornire un vero  e proprio editor di codice.

EditArea

Un normale campo TextArea viene trasformato in un vero e proprio editor con la possibilità di formattare il testo, cercare e sostituire parole e ottenere una colorazione del codice in tempo reale. Tra le sue caratteristiche notiamo:

  • Integrazione semplicissima tramite un solo script Javascript e una sola chiamata ad una funzione di patch.
  • Supporto della tabulazione
  • Cerca e sostituisci con regexp
  • Supporto della colorazione del codice per: PHP, CSS, Javascript, Python, HTML, XML, VB, C, CPP, Pascal, Basic, Brainf*ck
  • Auto-indentazione delle nuove linee
  • Numerazione linee di codice
  • Supporto multilingua: Croato, Danese, Inglese, Francese, Tedesco, Italiano, Giapponese, Polacco, potoghese)
  • Supporto per gzip
  • Multiple istanze
  • Fullscreen
  • Ridimensionamento della finestra in tempo reale
  • Possibilità di estendere le caratteristiche tramite plugin
  • Save e Load callback
  • Lavora con prototype e mootools

Un esempio di come usarlo:

JavaScript:
  1. editAreaLoader.init({
  2.                 id: "exemple_3" // id of the textarea to transform       
  3.                 ,start_highlight: true 
  4.                 ,font_size: "8"
  5.                 ,font_family: "verdana, monospace"
  6.                 ,allow_resize: "y"
  7.                 ,allow_toggle: false
  8.                 ,language: "fr"
  9.                 ,syntax: "css" 
  10.                 ,toolbar: "new_document, save, load, |, charmap, |, search, go_to_line, |, undo, redo, |, select_font, |, change_smooth_selection, highlight, reset_highlight, |, help"
  11.                 ,load_callback: "my_load"
  12.                 ,save_callback: "my_save"
  13.                 ,plugins: "charmap"
  14.                 ,charmap_default: "arrows"                 
  15. });

Post correlati

Wacom: editing grafico con le tavolette-display 2.0

Martedì 8 Gennaio, 2008

CintiQ

Una rivoluzione, finalmente, nel campo dell'editing grafico. Wacom presenta un'interessante soluzione che fonde una tavoletta grafica con un sistema touch-screen. Avendo anch'io una tavoletta Wacom, che ormai uso quotidianamente al posto del mosue, apprezzo moltissimo questo passo avanti (la prossima spesa che farò ;)). Attualmente io uso una Intuos3 formato A5, perfettamente integrata sia in Windows Vista che nei software di sviluppo che uso, come Adobe Photoshop CS3 e Flash CS3. Spesso mi è capitato anche di usarla semplicemente per scrivere una mail, grazie al software di riconoscimento della calligrafia presente in Windows Vista:

Riconoscimento calligrafico

La nuova serie CintiQ, Interactive Pen Display, si presenta con caratteristiche davvero interessanti:


1.024 livelli di sensibilità alla pressione

Sensibilità all'inclinazione
Inclinate il dispositivo di immissione dati in qualsiasi direzione per creare tratti di penna, pennello e gomma dall'effetto naturale.

Riconoscimento della rotazione
Alcuni dispositivi di immissione dati, ad esempio il nuovo Art Marker, sono ruotabili attorno al proprio asse: grazie al riconoscimento della rotazione, il Cintiq è in grado di rilevare questa rotazione e, nelle applicazioni appropriate (ad esempio in Painter 9) di trasformarla in pennellata ruotante.

Tool ID
Con il Tool ID (ID strumento) è possibile programmare e configurare individualmente ogni dispositivo di immissione input Cintiq per qualsiasi software. Le impostazioni memorizzate vengono attivate automaticamente nel momento in cui viene avviato il software.

ExpressKeys
Gli ExpressKeys sono una serie di tasti disposti lungo il lato sinistro e il lato destro della superficie attiva. Potete assegnare agli ExpressKeys le vostre combinazioni di tasti o macro preferite, dopodiché potrete dimenticare la tastiera.

Touch Strip
Con la nuova Touch Strip è possibile eseguire operazioni spostando il dito direttamente sulla tavoletta, come sul touchpad di un computer notebook: ad esempio ingrandire e ridurre le dimensioni delle immagini oppure scorrere documenti o editor PDF spostando semplicemente il dito.

Gomma
Correggere gli errori non è mai stato così facile: basta capovolgere la penna e cancellare!

Senza cavo né batteria
Tutti i dispositivi di immissione dati funzionano senza cavo e senza batteria: la necessaria alimentazione viene fornita dalla tavoletta.

Installazione Plug & Play
Il sistema Cintiq si installa facilmente e rapidamente ed è compatibile con tutte le vostre applicazioni software.

Tecnologia della penna Wacom
La tecnologia delle penne senza cavo e senza batteria sinonimo di un prodotto affidabile e di alta qualità, che richiede un assoluto minimo di manutenzione. Il tecnologia garantisce un alto livello qualitativo dei prodotti dell'azienda leader nel settore delle soluzioni di immissione dati basate su penna.

Wacom CintiQ

Questa soluzione potrebbe rappresentare il futuro dell'interazione tra uomo e PC, un fantastico ibrido tra un touchscreen e una tavoletta, che segue la direzione giusta a vantaggio dell'usabilità e accessibilità. L'era del mouse è davvero al tramonto?

Post correlati