Archive for the ‘ Tutorials ’ Category

 
Sunday, December 30th, 2007

Ho trovato questo tutorial sul flex skinning direttamente sul developer network di yahoo.

tasty :D

http://developer.yahoo.com/flash/articles/flex-skinning.html

 
Thursday, November 22nd, 2007

Inauguro con questo tutorial la finora linda categoria Flex :D

Il breve tutorial che andrete a leggere verte su come fare un semplice drag n drop tra 2 list component in modo che gli item dell’uno fungano come target al drop degli elementi dell’altro (una possibile applicazione potrebbe essere quella di spostare dei files all’interno di una lista di cartelle).

Il drag n drop standard:

Flex permette di abilitare il drag n drop tra due component direttamente da mxml, senza tanti problemi, abilitando le proprietà dragEnabled e dropEnabled dei componenti desiderati.

Il risultato che si ottiene abilitando dragEnabled e dropEnabled è questo:

[flash http://www.flashfuck.it/wp-content/uploads/2007/11/dragdropintoko.swf w=400 h=300]

Droppando gli elementi della tilelist all’interno del datagrid questi verranno clonati ed aggiunti allo stesso datagrid. Le righe del datagrid non sono selezionabili, i nuovi elementi sono aggiunti prima o dopo i record già presenti.

(more…)

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

 
Thursday, October 25th, 2007

phpBB è una delle piattaforme di forum free più diffuse nella rete.
Ha i vantaggi di essere completamente free e opensource, di essere di facile installazione, di avere svariati temi e mod che permettono facilmente di modificare praticamente tuto… ma c’è anche l’altro lato della medaglia, un punto nettamente a sfavore di phpBB è la spam e gli spambot.

Ma perchè darla vinta agli spammers cambiando l’engine del forum (passando a vBulletin o a chissà quale altro) o perseverando nell’eliminare gli utenti fasulli uno ad uno?

Ecco qualche accorgimento per diventare uno

SpamFucker

e godersi il proprio forum phpBB gratuito…

(more…)

Recentemente sono un pò fermo sul lato flash actionscript, mi sto dedicando parecchio ad AJAX, cercando di rimanere sul “pi√π crossbrowser possibile”, con tutte le problematiche del caso.

Internet Exploder

Tra i vari bug di internet explorer sono incespicato su un qualcosa di parecchio fastidioso: ie gestisce male gli onload delle immagini.
All’inizio pensavo che non fossero gestiti del tutto, o solo in parte (?) , ma a volte ricaricando la pagina dispacciava l’evento, altre no, apparentemente a caso.

Ecco una porzione di codice che presenta il problema descritto:

Così explorer entra in modalità cagacazzo random error
Non occorre scervellarsi (come ha fatto il sottoscritto), la soluzione è più facile del previsto:

(more…)

Cosa sia uno spam bot è presto detto: sono quegli “affari” che gironzolano in rete lasciando spam ovunque, specialmente nei commenti dei blog e nelle community con libera iscrizione.

spambot.jpg
(foto di uno spambot)

Esistono una marea di plugin anti spam, askimet su wordpress, tutta una sfilza di mod antispam per i forum di phpBB, e anche molti scriptini confezionati a mano che possono risultare pi√π o meno efficaci.
Ma i metodi pi√π diffusi identificano l’utente “spam-bot” per esclusione, chiedendo un’interazione in pi√π all’utente umano.
(more…)

 
Sunday, September 9th, 2007

Daniele (aka snakez su wave9) ha pubblicato sul suo blog un gran pezzo della sua tesi sul Web 2.0.

web2.0

Da queste parti si mangia quasi esclusivamente pane e flash, ma ritenevo giusto segnalare questi 60 piani di morbidezza. Bravo snakko, continua così.Questo è il link al suo lavorone, scaricabile in pdf.

 
Monday, September 3rd, 2007

Di recente ho installato Flash Tracer, l’estensione per Firefox di Sephiroth (aka Alessandro Crugnola), sul mio mac…
Fiducioso sono andato a visitare un lavoro pubblicato di recente, ma avviato il tracer ottenevo sempre lo stesso messaggio di errore:
[Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsILocalFile.lastModifiedTime]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: chrome://trace/content/tracer.js :: readfile :: line 168" data: no]

Dopo un po’ di ricerche su google e con un pò di fortuna sono arrivato a trovare l’inghippo.

Andate su Macintosh HD:Library:Application Support:Macromedia
e aprite il file mm.cfg con TextEdit.

All’interno ci sono dei parametri per la configurazione del flash player, tra cui anche la voce “TraceOutputFileName”.
Se il vostro debug player è successivo alla versione 9,0,28 cancellate in tronco la voce, altrimenti NON FATE NULLA (o altrimenti provate lo stesso, ma a vostro rischio e pericolo [il massimo che può accadere è che dobbiate reinstallare il player{anche se vi conviene comunque fare un backup del file e poi semmai ripristinate quello... :D }]), poi salvate il file.

Aprite Firefox, accendete il flash tracer e andate su “opzioni” per modificare il path dove vengono salvati i log del flash debugger player.
il path da inserire è:
Macintosh HD:Users:vostro username:Library:Preferences:Macromedia:Flash Player:Logs:flashlog.txt
cliccate su ok, e magicamente inizierete a vedere i trace del flash aperto (sempre che ne abbia :D )

La configurazione che ho usato è:

  • flash debugger player 9,0,45
  • Firefox 2.0.0.3
  • mac osx 10.4.9

buona debuggata ;D


Make Flash Tracer run properly on Mac Osx

Recently I installed Flash Tracer, Sephiroth’s (aka Alessandro Crugnola) firefox extension, on my mac…
Confident on my new ‘game’ I got visiting one of my lastest works, but once started flash tracer I only got the same error:
[Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsILocalFile.lastModifiedTime]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: chrome://trace/content/tracer.js :: readfile :: line 168" data: no]

After some googling and with a bit of luck I got it!

Step 1
IF YOUR DEBUG PLAYER VERSION IS > 9,0,28
To correct the “bug” you have to get here with your finder
Macintosh HD:Library:Application Support:Macromedia
then open mm.cfg file with TextEdit

mm.cfg contents flash player configuration. Inside you have to find out the line with “TraceOutputFileName”.

IF YOUR DEBUG PLAYER VERSION IS > 9,0,28 you have to delete that line, otherwise don’t do anything with this file.

Step 2
Open your Firefox, turn on flash tracer and open options dialog to modify the path for your debug player log.
The correct path is:
Macintosh HD:Users:your username:Library:Preferences:Macromedia:Flash Player:Logs:flashlog.txt
Then click ok and “magically” you’ll start see your flash tracer TRACING!(if any swf is communicating with it! :D )

This is the configuration which I used to get Flash tracer run properly:

  • flash debugger player 9,0,45
  • Firefox 2.0.0.3
  • mac osx 10.4.9

good debugging ;D

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…)