25
nov/09
0

Assurer le developpement international de ses productions Flash

Dans la série Big Brother is watching you , j’ai découvert récemment le site http://www.hostip.info/, base de donnée de correspondances adresse IP / Localisation disposant d’une API publique.

Puisqu’il est évident que la plupart des lecteurs assidus de ce blog œuvrent quotidiennement à l’international,

je me permet de vous livrer une implémentation Actionscript de cette API dont vous ne manquerez pas, j’en suis sur, de noter l’utilité pour déterminer la provenance de vos visiteurs.

Qui dit service dit évènementiel (sauf au tennis, mais restons concentrés), voici donc comment manipuler cette classe :

var host:  HostIP = new HostIP() ;
host.addEventListener( HostIPEvent.HOSTIP_CALLBACK, back ) ;
host.addEventListener( HostIPEvent.HOSTIP_ERROR, err ) ;
host.addEventListener( HostIPEvent.HOSTIP_FLAG_CALLBACK, flag ) ;

Et donc ? Que peut on faire avec cette instance de HostIP ?

Pour avoir le code pays ( une classe CountryCodes bien pénible à taper est dispo dans le package ):

host.getCountryCode() ;

Pour avoir le drapeau du pays :

 host.getCountryFlag() ;

Pour avoir simplement l’adresse de l’image du drapeau

 host.getCountryFlagURL() ;

Pour avoir une représentation texte peu exploitable mais très décorative de l’emplacement du visiteur :

 host.getStringLocation() ;

Pour avoir une représentation XML très exploitable mais peu décorative de l’emplacement du visiteur :

 host.getXMLLocation() ;

Toutes ces méthodes ne prennent par défaut aucun paramètre et font donc la recherche sur l’ip du visiteur, mais une IP au format String peut également être transmise.

Comme une petite démo vaut souvent mieux qu’un long discours ( trop tard ) : démonstration

les classes !

6
oct/09
0

Pixeliser une image ? Mais quelle riche idee !

C’est en consultant le passionnant blog Hidiho! de Nicolas Barradeau riche en expérimentations graphiques assez démentes que je me suis dit :

« Tiens ? Pourquoi ne pas faire la même chose en moins bien histoire d’alimenter mon blog où de toute façon personne ne viendra jamais ? »

Fort de cette riche idée, me voici en mesure de vous présenter une magnifique classe Actionscript proposant une fonctionnalité aussi utile qu’esthétique : pixeliser une image.

Le principe est simple : l’image source est transformée en BitmapData et coupée en rectangles de la taille spécifiée.
Chaque rectangle est ensuite rempli avec la couleur moyenne de la zone.

Voila comment on s’en sert :

var bmp : Bitmap = new Bitmap( Pixelate.pixelate( SOURCE, TAILLE D UN PIXEL )) ;

incroyable non ?

Voici une petite démo avec une jolie asiatique dedans pour bien comprendre le non intérêt de cette classe et en même temps assouvir vos instincts de nerds fans de Hentaï.


la méga classe !

27
juil/09
2

Benchmark : booste ton code

Je vais commencer par vous présenter une petite classe dispo sur mon SVN qui peut s’avérer utile pour certains :

la classe Benchmark.

Son but est simple, pouvoir comparer facilement la rapidité d’exécution de plusieurs fonctions pour au final ne conserver que la plus rapide (ou la plus lente, c’est vous qui voyez).

Comme un petit bout de code vaut mieux qui long discours confus, exemple :

Création des fonctions à comparer :

private function func1( a : Array ) : void { for ( var  i : int = 0 ; i < a.length; ++) ; }
private function func2( a : Array ) : void { for each ( var  i : * in a ) ; }
private function func3( a : Array ) : void { var l : int = a.length ; for ( var  i : int = 0 ; i < l; ++) ; }

Initialisation du benchmark avec deux paramètres :
-le nombre d’itérations : correspond au nombre de fois ou chaque fonction sera exécutée à chaque boucle
-le nombre de boucles : correspond au nombre de boucles à faire pour calculer la moyenne

on ajoute le bench à la scène pour afficher le résultat.

var bench : BenchMark = new BenchMark(1000, 10) ;
addChild(bench);

on peut désormais ajouter ses fonctions au bench :
la méthode addFunction accepte les paramètres suivants :
- la fonction à tester
- le scope de la fonction
- la label a afficher pour cette fonction
- le reste des paramètres à transmettre.

// The param to give to the functions
test = new Array() ;
for ( var i : Number = 0 ; i < 5000 ; i++)  test.push(i) ;

bench.addFunction( func1, this, "for with length inside", test) ;
bench.addFunction( func2, this, "for each", test) ;            
bench.addFunction( func3, this, "for int", test) ;

Une fois ceci fait, il ne reste plus qu’à lancer le test pour obtenir le résultat :

bench.start();

Résultat :

capture benchmark

Et oui je suis également un UI Designer émérite.

la classe !