Articoli con Tag ‘Sviluppo’
Illustrerò una tecnica per realizzare simboli (MovieClip) modali da usare similmente ai componenti Alert e Window di Flash. L’obiettivo è quello di mostrare un MovieClip sopra tutti gli altri, disabilitando – anche – l’accesso all’area sottostante e qualsiasi altro oggetto/componente presente. Ad essere sincero ho realizzato tutto ciò eseguendo un po’ di reverse engineering dai codici Adobe, che sono in chiaro! Non ho proprio resistito
L’artefizio che si usa, per disabilitare qualsiasi interfaccia presente al di sotto del nostro MovieClip, è quella di creare un MovieClip trasparente che prenda tutta l’area dello stage. A questo MovieClip, che non sarà praticamente visibile, si aggancia un metodo “nullo” sull’evento onRelease, stando attenti ad impostare la proprietà useHandCursor a false.
Prima di tutto creiamo un filmato con una qualsiasi interfaccia nello stage principale:
Continua...
Sul blog di Internet Explorer (IE Automatic Component Activation (Changes to IE ActiveX Update)) è stato annunciato un’importante cambiamento che avverà introno ad aprile 2008, con il rilascio di importante patch, compresa la tanto attesa Service Pack 3. Un’anteprima, tuttavia, sarà disponibile entro dicembre 2007 dal centro download di Internet Explorer.
Nell’aprile 2006, infatti, Microsoft aveva introdotto una patch in Internet Explorer che bloccava l’interazione con i componenti ActiveX presenti in una pagina Web. Questo “blocco”, alla fine, si risolveva nella richiesta esplicita – diretta all’utente/navigatore - di attivare il controllo (filmato Flash, QuickTime, etc…) tramite la barra spaziatrice o un click del mouse.
Nel tempo, tuttavia, sono state introdotte tutta una serie di scorciatoie per evitare questa fastidiosa richiesta, scorciatoie ufficiali (proposte ad esempio dalla stessa Macromedia per Flash e da Apple per QuickTime) e non ufficiali (SWFObject o UFO, ad esempio – vedi anche Unobtrusive Flash Objects).
Secondo Microsoft gli sviluppatori non dovranno modificare nulla ad aprile 2008 nei “vecchi” siti che utilizzavano scorciatoie, tuttavia è bene dare un’occhiata al blog di Internet Explorer per i casi particolari.
Microsoft torna quindi sui suoi passi, ed effettivamente ci eravamo chiesti un po’ tutti che idiozia fosse questa dell’attivazione del controllo, “pezza” adottata per una carenza nella gestione degli ActiveX (TAG OBJECT) più che a falle nei componenti stessi. Negli altri browser, infatti, l’uso dei Plugin è accompagnato dal più solido TAG EMBED. Ultima nota:
In the coming weeks, we’ll be updating the MSDN article with descriptions of the new behavior. Keep an eye out here for when the preview goes live.
Continua...
Nel Post Estendere i MovieClip in Adobe Flash MX avevo illustrato alcune tecniche per estendere un MovieClip. In particolare avevo detto che l’uso di MovieClip.prototype non permetteva l’estensione di proprità ma solo di metodi:
[...] Due importanti limitazioni di questa tecnica sono:
- Non può essere applicata a tutti gli oggetti esposti da Flash
- Possono essere “aggiunti” solo metodi e non proprietà [...]
In verità è possibile, con un passaggio in più, aggiungere dinamicamente proprietà anche usando MovieClip.prototype. Prima dell’introduzione di function get e function set, infatti, Flash permetteva l’aggiunta di proprietà (in lettura/scrittura o solo lettura) tramite il metodo addProperty(). Nella pratica questo si traduce nell’invocazione del metodo addProperty() e nella definizione di due funzioni getter e setter. La setter può essere null così da creare proprietà in sola lettura. Ad esempio se volessimo estendere tutti i MovieClip con una nuova proprietà _alpha in grado di aggiungere un’animazione, basta scrivere il seguente codice:
1 2 3 4 5 6 7
| function _get_alpha ():Number {
return(this._alpha );
}
function _set_alpha (v :Number):Void {
new Tween (this, "_alpha", Strong .easeOut , this._alpha , v , 1, true);
}
MovieClip.prototype.addProperty ("_alpha_tween", _get_alpha , _set_alpha ); |
Da questo momento in poi se abbiamo un simbolo “miosimbolo_mc” possiamo sfruttare questa nuova proprietà:
1
| miosimbolo_mc._alpha_tween = 50; |
Quello che non è possibile fare, invece, è sovrascrivere le proprietà esistenti; per questo motivo ho usato _alpha_tween invece di _alpha. Ecco, quindi, un buon motivo per usare comunque le Classi 2.0 per estendere – e derivare – eventuali MovieClip.
Continua...
Riprendendo il Post StageExt Class: filmati ridimensionabili in Flash ecco un modo ancor più semplice per ottenere il medesimo effetto, solo se nella libreria del nostro filmato è presente almeno un componente Flash!
Create un simbolo, un quadrato rosso 100×100 e ponetelo nella stage chiamandolo resizeWindow. Inserire in libreria, non nello stage, un componente qualsiasi, ad esempio un TextInput, e scrivete il seguente codice nel primo fotogramma del filmato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import mx .managers .SystemManager ;
//
Stage.scaleMode = "noscale"
//
//SystemManager.init();
SystemManager .addEventListener("resize", resizeWindow );
//
resizeWindow .resize = function(Void ):Void {
var s :Object = SystemManager .screen ;
this._width = s .width;
this._height = s .height;
this._x = Math.round(s .x);
this._y = Math.round(s .y);
}
resizeWindow .resize(); |
La riga 6 (SystemManager.init();) può essere omessa.
Continua...
Quando si estente una classe da un MovieClip che continene altri oggetti (MovieClip, TextField, etc…) questi ultimi potrebbero non essere “pronti” all’interno del costruttore. Questo accade soprattutto quando si utilizzano altri MovieClip estesi o i componenti (controls) di Flash. Per risolvere il problema basta sfruttare l’evento onLoad ereditato dalla classe stessa. Ad esempio immaginiamo di avere un MovieClip che contiene un campo TextField (oggetto visuale statico interno a Flash) e un oggetto TextInput (controllo inserito dal pannello componenti) e si vuole impostare qualche proprietà durante il costruttore della nostra classe MiaClasse.
Creiamo un simbolo ed inseriamo al suo interno sia l’oggetto TextField (chiamiamolo text_txt) sia l’oggetto TextInput (textinput_txt). Associamo questo simbolo ad una classe che estende un MovieClip, chiameremo la nostra classe MiaClasse. Quello che vogliamo ottenere è che durante il costruttore della nostra classe MiaClasse vengano inizializzati questi due controlli. Se proviamo ad usare un codice come questo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| //
import mx .controls .TextInput ;
//
class MiaClasse extends MovieClip {
//
private var text_txt :TextField;
private var textinput_txt :TextInput ;
//
function MiaClasse () {
trace("MiaClasse::costruttore");
//
text_txt .text = "Ciao";
textinput_txt .text = "Ciao";
//
}
} |
Continua...
TynyMCE 2.1.2 (3.01 alpha)
Giunto alla versione 3.01a (l’ultima stabile è la 2.1.2), TinyMCE supporta i seguenti browser:
(Mozilla, MSIE, FireFox, Opera and Safari (experimental)).
Grazie al supporto dei Plugins è completamente configurabile, sia a livello di Skin (vedi immagin in basso per due esempi) sia a livello di caratteristiche supportate (vedi Plugins). Completo di language pack permette di personalizzare l’output XHTML 1.0. Utilizzabile da PHP/.NET/JSP/Coldfusion GZip compressor supporta anche Ajax per le operaqzioni di Load/Save.
Continua...
Ecco un’interessante estensione per FireFox (oggi rilasciata la patch 2.0.0.9) scritta da Kris Zyp. RESTTest permette di eseguire send e verificare le receive verso un URL utilizzando il protocollo REST, scegliendo tra i canonici metodi GET o POST (eventualmente personalizzabili).
RESTTest può essere utilizzato per verificare il funzionamento dell’oggetto XmlHttpRequest e quindi per testare le applicazioni che fanno uso di Ajax. Possiamo quindi simulare facilmente e velocemente richieste e risposte XHR.
Questa estensione è disegnata specificatamente per lavorare con risorse di tipo REST e supporta tutti i metodi HTTP.
Nel campo POST/PUT è possibile inserire tutti i parametri che intendiamo inviare alla nostra pagina di test, nella sintassi standard:
variabile1=valore1&variabile2=valore2&[...]variabilen=valoren
Questa estensione risulta utile anche nel test dei Feed RSS di un sito o nell’analisi dei paramteri di qualsiasi servizio RPC.
Continua...
Nell’ottica della programmazione ad oggetti viene spontaneo realizzare componenti per riutilizzarli in altri progetti, soprattutto se questi componenti sono general-purpose. L’uso delle classi è sicuramente un primo passo nel riutilizzo del codice, tuttavia, spesso, queste classi sono legate a MovieClip anche estremamente complessi. Così nasce la necessità di “importare” sia il codice ActionScript della classe (cosa assai facile) ma anche tutti i simboli ad esso associato.
Creare Componenti in Flash
Questa strada è sicuramente la più corretta da un punto di vista strettamente logico. Tuttavia, almeno nella versione Flash MX, creare un componente che quantomeno si avvicini a quelli forniti con l’ambiente di sviluppo non è impresa da poco. I componenti, infatti, soprattutto quelli visuali, richiedono tutta una serie di procedure (come l’inclusione delle interfacce UIObject o UIComponent) e la scrittura estremamente accurata della classe legata al nostro componente. Rimane comunque il fatto che creare un componente è un’esperienza interessante da fare, ma il tempo di sviluppo è davvero notevole. Inoltre un componente come si deve supporta la modalità in designtime o authortime che altro non fa che proporre un’anteprima di quello che accadrà a runtime. È possibile associare un’icona e una documentazione perfettamente integrabile nell’IDE di Flash, con tanto di intellisense durante la scrittura del codice. Ecco quindi che scegliere questa strada comporta un dispendio temporale notevole, probabilmente riservato a particolari progetti dove, ad esempio, sia proprio il componente l’obiettivo del progetto.
Ci sono software house specializzate nella produzione di componenti per Flash, sia come prodotti gratuiti che a pagamento. Esclusi quindi i componenti estremamente semplici, dove ad esempio non c’è interfaccia utente, questo metodo è ottimo ma temporalemte dispendioso e quindi poco usato nella maggioranza dei casi.
Continua...
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 <object> ed <embed>. 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 <object> e <embed>. 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...
Come promesso ecco la versione aggiornata del simpatico effetto delle scritte magiche. Ho realizzato una diversa animazione per la “lettera”, per mostrare quanti effetti si possono fare. Il sorgente completo potete scaricarlo qui.
Classe MagicLetter
Questo è il codice della Classe che, ovviamente, può essere modificato e migliorato ulteriormente. Ad esempio è possibile inserire un parse per supprotare un simbolo di “nuova linea”, per andare a capo insomma. Possono essere introdotte le funzioni di get e set per esportare alcune proprietà all’esterno, ed altro ancora.
Continua...
Ultimi Commenti
Giovambattista Fazioli: @Nik: Sono contento! In bocca al lupo dunque!!
Nik: Lunedì ho l’esame di informatica su java, grazie mi sei stato utilissimo, il libro che ho era poco chiaro...
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...
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...