Archive for the ‘ ActionScript ’ Category

Sarò breve e conciso (le ultime parole famose :) )

Il problema che andrò ad affrontare è il seguente:
come faccio a comunicare ad una classe il risultato di una funzione, o pi√π generalmente dei “dati” elaborati in maniera asincrona da un’altra classe istanziata nella mia classe di partenza?

Se i dati fossero elaborati e restituiti in diretta non ci si porrebbe il problema, esempio ne sono le classi di largo consumo come Math e Date (es: var mioint:int = Math.round(9.99999)).

Ma se volessi delegare (termine usato non a caso, visto i trascorsi di as2 :) ) a delle classi customizzate la mole di lavoro tipo delle routines di caricamento o qualcosa di simile?

Poniamo il caso di voler caricare una configurazione per la nostra applicazione\sito\game\… che risiede su un file cfg.xml.
Potremmo fare il tutto all’interno della document class così,

  1. creiamo una private var _cfgxml:XML
  2. nel costruttore andiamo a caricarci i dati con var myLoader:URLLoader = new URLLoader(new URLRequest(‘cfg.xml’));
  3. appioppiamo al loader un gestore di evento Event.COMPLETE a cui associamo il parsing dei dati myLoader.addEventListener(Event.COMPLETE,cfgParse);
  4. creiamo private function cfgParse(e:Evento) in cui istanziamo _cfgxml = new XML(e.target.data);

Ok, è un’ipotesi plausibile, ma se questo nostro file richiedesse attenzioni particolari? o se semplicemente volessimo delegare ad altre classi le funzioni di parsing, di comunicazione con componenti, ecc ecc, solo per la soddisfazione di essere pi√π “puliti” nel codice…?

In actionscript 2 avremmo utilizzato Delegate passando come argomento la timeline (o l’istanza di classe) di riferimento. Ma in actionscript 3 “Delegate è stat’ segheit” :D

Si rende quindi necessario passare la timeline\istanzadiclasse di riferimento come parametro per l’istanziazione della classe che elaborerà i dati.

Esempio:

document class

private var _cfg:CFGManager;

public function Main(){
//costruttore
_cfg = new CFGManager(this);
_cfg.loadCFG();

}public function continuaMainClass(){}

classe richiamata dalla document class

private var _main:Main; //riferimento alla classe chiamante
public function CFGManager(m:Main){//costruttore
_main=m;//qui vado a memorizzare i riferimenti al main
}

public function loadCFG(){
//qui carico il mio xml di configurazione
//appioppo l'event listener per il caricamento
//e poi passo il tutto a parseCFG
}
private function parseCFG(e:Event){
//qui parso l'xml da e.target.data
//e poi faccio continuare l'esecuzione del main
_main.continuaMainClass();
}

Perfortuna non è nulla di così complesso :D

Per ottimizzare il tutto però sarà opportuno non ricevere in ingresso un parametro fortemente tipizzato, ad esempio la classe CFGManager accetta in input solo parametri di tipo “Main”…se si vuole “astrarre” il codice, in modo da renderlo riutilizzabile sarà opportuno che accetti potenzialmente qualsiasi tipo di dato, da DisplayObject all’estremo “*”…ma poi sono gusti :D

avevo detto che sarei stato breve, quindi alla prossima :D

Da mesi sto cercando articoli, tutorial, tentativi, abbozzi di codice o discussioni relativi al supporto per l’editing di actionscript (principalmente as3) su Aptana (che ormai è diventato il mio tool di programmazione definitivo per il “non-flash development:D ).

Esistono vari plugin di eclipse in grado di affrontare questa necessità, cito ASDT (actionscript development tools) per as2 e il binding dell’sdk di flex alle risorse di eclipse via flex2ant per as3.

Tuttavia tutti i metodi che ho sperimentato sono a mio avviso insoddisfacenti.

Dopo il rilascio del plug-in di aptana per il supporto della tecnologia Adobe AIR tutti (io per primo :) ) si aspettavano un supporto che tale plug-in apportasse all’ambiente di editing le capacità di gestire anche actionscript, ma nessuna risposta è stata data in merito dallo staff tecnico di Aptana.

MA girovagando tra i ticket di Aptana oggi mi sono imbattuto in questo post il team esecutivo scrive:

We are currently working on the next milestone release of the core IDE and will discuss AS3 support once we start to plan our next Adobe AIR plugin release.

 (Stiamo giustappunto lavorando alla prossima release di aptana e discuteremo del supporto di actionscript 3  nonappena inizieremo a pianificare la prossima versione del plug-in per il supporto di AIR)

Certo, non è una risposta capace di entusiasmare le folle, ma almeno è una risposta :D
Inoltre il post procede con un

“This is definitely the most requested enhancement so we will take a hard look at what it will take to implement this.”

(questa è in assoluto la feature più richiesta quindi vedremo di fare il possibile per fare in modo di implementarla)

Ecco, in una riga hanno già corretto il tiro…

Aspettiamo fiduciosi…
nel frattempo, bè, asdt e flex2ant non sono poi così male :D

 
Wednesday, October 3rd, 2007

AS2 o AS3?
Idee e opinioni degli addetti ai lavori sulle versioni di actionscript, sulle tendenze di mercato..

gotoandfuck.png

Riporto il topic su wave9.it, leggetelo qui o andate direttamente alla fonte :D

Apro questo thread perchè è forte lo slancio che da un pò di tempo a questa parte ha trascinato l’attenzione di molti “flasher” su AS3, e diverse sono le opinioni a riguardo tra gli addetti ai lavori e non solo.

Actionscript 3 ha portato insieme gioie e perplessità,
ha sicuramente accentuato le differenze tra le figure “flash coder” e “flash designer” marcando pi√π strettamente il territorio di confine.
Forse ha incrinato la figura del “flasher” come “colui che sviluppa in flash” e ha attirato (soprattutto con la sempre maggiore diffusione di flex) una valanga di coders a cimentarsi con actionscript.

C’è chi pensa che AS3 abbia solo complicato le cose, o meglio turbato l’equilibrio che si era andato a creare con l’avvento di flash mx,
che con AS3 serva scrivere molto pi√π codice per fare le stesse cose che si facevano in AS2, e quindi non serva a nulla,
che AS3 e la AVM2 (la virtual machine di flash player 8.5+) sia solo una strategia di marketing per stravolgere il mercato e vendere flash 9 (ehm…cs3) e flex builder ad una fetta pi√π ampia di coders….

C’è anche chi pensa che AS3 sia il “futuro” ( anche se non ancora ben rodato),
che AS3 sia effettivamente pi√π valido di AS2, che la virtual machine sia nettamente pi√π performante della precedente…e via così…

…e intanto hanno presentato al MAX il flash player 10…

E voi cosa ne pensate?

 
Wednesday, September 19th, 2007

Dalla Germania con furore arriva un package indispensabile per chi vuole cimentarsi con qualcosa di pi√π di una semplice image gallery.
Michael Baczynski, ha pubblicato sul suo blog il suo “Data Structures“.

AS3 Data Structures

ma vediamo di cosa si tratta…
(more…)

Molti siti propongono swf a tutto schermo conseguendo l’obbiettivo in vari modi pi√π o meno compatibili con le specifiche W3c.

Se la domanda che vi assilla è:
“Come si fa ad adattare un swf alle dimensioni della finestra del browser in modo che il risultato sia compatibile con i maggiori browser?” continuate pure a leggere :D

(more…)

La domanda da porsi è:
e se volessi mascherare più di un movieclip con la stessa maschera partendo da un mc già mascherato?

La risposta è:
esiste un hack a riguardo fin dai tempi di flash mx.

Funziona così:
si maschera un movieclip direttamente da timeline, gli si assegna un nome istanza (ad esempio “myClip”).
Una volta mascherato si può procedere con la parte di script.

myClip.attachMovie("movieclipinlibreria","nome",myClip.getDepth()-1);

così facendo il nuovo clip inserito nello stage sarà mascherato esattamente come myClip.
(more…)

Anche un newbie di actionscript sa cosa significa questa riga di codice:

var myInstance:MyClass = new MyClass();
myInstance.myVar = 1;

la proprietà “myVar” dell’istanza di classe myInstance assume il valore 1.

Ma forse non è così immediato capire cosa può nascondere la stessa riga di codice. (more…)

Partiamo da qui:
Actionscript 3 rispetto ai suoi predecessori fa un balzo clamoroso verso l’OOP (object oriented programming) “vero”.

In un linguaggio Object Oriented il codice viene organizzato appunto in “oggetti”, ossia contenitori di funzionalità con metodi e proprietà definite.

Ora, per comprendere meglio cosa significhi in AS3 questa affermazione procediamo ad esempi.
(more…)

Utilizzare tecnologie client side quali Flash, Flex, Ajax all’interno di un website può aumentare l’usabilità del sito stesso, può rendere pi√π gradevole l’interfaccia, pi√π intuitiva la navigazione, ma rende decisamente pi√π difficile ed impervia l’ottimizzazione per i motori di ricerca (SEO).

Uno dei metodi utilizzati per il posizionamento di siti fortemente aggrappati alle tecnologie client è creare delle “landing pages” che rimandino in qualche modo al sito flash \ ajax \ flex \ ecc.. ma il buon esito non è certo assicurato, anzi.

SEO con Flash e Ajax

(more…)

 
Tuesday, July 17th, 2007

Fino ad actionscript 2 pulsanti e movieclip gestivano anche l’evento onReleaseOutside. Con l’avvento di flash 9 (pardon, cs3), il release outside è stato depennato, non si sa bene per quale motivo, però, per la disperazione di grandi e piccini, quell’evento non c’è pi√π.

Gestire l’onReleaseOutside in actionscript 3 è però pi√π facile di quanto si possa credere.
Scaricatevi questo file >> onReleaseOutside actionscript 3 (more…)