Liguoblog

mardi 25 octobre 2005

Valeur / Référence

Je me suis rendu compte d'un fait dernièrement : en Actionscript, tout est passé par valeur.  Même si cela peut paraitre étrange, c'est bien le cas :P  

Mon ancienne façon de voir la chose, c'est que les types Boolean, Number et String sont passés par valeur et tout le reste (Array, Object, etc...) est passé par référence.

Pourquoi est-ce que c'est seulement ces trois types qui sont passé valeur ?  Et pourquoi le reste par référence ?  Regardons tout d'abord du côté du reste qui est passé par référence.  

Lire la suite

dimanche 23 octobre 2005

Le jeu du serpent

Je viens de finir mon premier petit projet en AS3 (moment historique ^^).  Il s'agit du jeu du serpent. Le serpent avance tout seul et il faut le diriger pour éviter les mur et aller chercher la bouffe. Plus il bouffe, plus il devient grand et il ne faut pas qu'il se passe sur le corps.

Lire la suite

mercredi 19 octobre 2005

AS3 - for each

Il existe une nouvelle façon de faire des boucles en AS3.  Il s'agit du for each.  La syntaxe est presque la même qu'un for(.. in ..) sauf qu'on y ajoute le mot each entre le for et la parenthèse.  

La différence au niveau fonctionnel c'est que l'itération se fait sur les valeurs d'un objet plutôt que les clés (index ou nom de propriété ).  

Lire la suite

AS3 - mxmlc

Comme Aggelos l'a mentionné, Zorn permet de modifier les options de compilation du compilateur.  En fait, Zorn est livré avec deux compilateurs utilisable en ligne de commande.

- mxmlc qui permet de compiler du MXML et de l'AS3 en SWF

- compc qui permet de générer des SWC.


Donc pour répondre à la question d'Aggelos :
Les paramètres de compilation d'ailleurs, quels sont-ils ?


La réponse se trouve dans la doc. Plus précisément dans la section :  Developing Flex Applications > Using the command line compilers > Using mxmlc > mxmlc options.

Je ne cite pas les options ici car la liste est assez longue... ^^

mardi 18 octobre 2005

AS3 - StringBuilder

Vous rappelez vous du post sur le StringBuilder de Java ?  De ce post on peut tirer quelques citations :

liguorien à écrit :
J'aimerais bien avoir des performances semblable en ActionScript...

kiroukou à écrit :
J'ai essayé avec 10000 irérations comme toi liguo, mais j'ai bien faillis tuer mon PC :P

Bref, l'AS a encore des progrets a faire....

Et bien kiroukou, l'AS à fait du progrès ^^

Lire la suite

[OT] Le ciel lui tombe sur la t

Ce post est totalement hors-sujet mais je ne peux m'empêcher de le faire. Ce weekend, Albert Uderzo à sorti un nouvel album d'Astérix.  Ayant lu toute la collection à mainte reprise dans mon enfance, j'ai acheté cet album.

Ceux qui ont l'intention de l'acheter à tout prix, ne lisez pas la suite !

Lire la suite

AS3 - default parameter

Autre nouveauté au niveau des paramêtres de méthode. Il est maintenant possible de définir une valeur par défaut au paramêtres d'une méthode.


AS3
public function test(param1:int, param2:int = 5, param3:String = "valeur par defaut"):Void
{
trace(param1 + " , " + param2 + " , " + param3);
}

test(1);  // 1 , 5 , valeur par defaut
test(1, 2); // 1 , 2 , valeur par defaut
test(1, 2, "serge"); // 1 , 2 , serge


Donc dans cette déclaration, param2 et param3 sont optionnels.  Simple et efficace ^^

AS3 - E4X

Ah le XML, le fameux XML.  Qui d'entre ceux qui ont déjà utiliser du XML n'ont jamais eu à faire face à des doc.firstChild.childNodes[index].childNodes[index2].firstChild.attributes.name ?  Il ne doit pas y en avoir beaucoup en tout cas.  Et bien avec une des nouveauté qu'apporte l'AS3 c'est maintenant chose du passé... ^^

Lire la suite

lundi 17 octobre 2005

AS3 - const

Qu'est-ce que c'est const ?  Pour les développeurs ayant un background en C++, ce n'est pas nouveau.  Pour les développeurs ayant un background en Java, c'est la même chose que déclarer une variable final.  Pour les développeur AS, voici une brève explication.

Lire la suite

AS3 - arguments

L'objet arguments existe encore en AS3, mais nous avons un petit problème...  Le compilateur est beaucoup plus stricte à ce niveau. Si la déclaration d'une méthode ne comprend aucun arguments, il sera impossible d'en envoyer lors de l'invocation. Une nouvelles fonctionnalité du language permet de régler le problème.

Lire la suite

AS3 - prototype

Je ne vous apprends surement rien, Macromedia à lancé aujourd'hui le sous domaine labs.macromedia.com avec Flex 2.0, Flex Builder 2.0, Flash Player 8.5 et l'AS3.  Commençons par regarder de plus près l'AS3 avant de s'attaquer au reste.

Lire la suite

vendredi 14 octobre 2005

FileReference : evil

J'ai commencé cette semaine à utiliser les nouvelles fonctionnalités de Flash 8.  La classe flash.net.FileReference en particulier.  J'ai commencé par lire ce tutoriel d'Aggelos.  Le code du côté de Flash s'est fait assez rapidement sans problèmes.  Enfin, c'est ce que je croyais...


Pour le côté serveur, j'ai commencé par faire un action Struts dont le rôle est d'uploader le fichier, créer une entré dans la BD, récupérer l'ID de cette entré et le retourné au SWF.  C'est à ce moment que je me suis rendu compte qu'il n'avait aucun moyen de lire le contenu de la réponse de la requête HTTP utilisé pour l'upload (de la même façon qu'on le fait avec un LoadVars).  J'ai dû procéder à un hack merdeu.  Je stock l'ID dans une variable session et je fais un autre requête au serveur pour récupérer l'ID qui est dans la session.  Ce qui entraine un autre problème...

Habituellement les requêtes HTTP faites par le FlashPlayer (LoadVars, XML, etc...) envoient les cookies du client au serveur.  Ce qui permet de gérer les sessions.  Mais... le FileReference d'envoi pas les cookies ! Il faut envoyer l'ID de session manuellement...


AS2
file.upload("/monapplication/uploadFile.do;jsessionid=7480A780784A407F05D583C99B0AAB01?param1=toto&param2=tata");


Pour récupérer l'ID de la session dans le SWF, je l'ajoute comme paramêtre dans le paramête movie de l'élément object dans le HTML.

L'upload semblait bien fonctionner, le fichier était bien copié sur le disque dur du serveur.  Mais en fait ce n'était pas le bon fichier...  J'avais réutilisé une classe d'upload que j'ai fait pour le même type d'application, sauf que le client était en Swing.  J'envoyais les données binaires brutes directement dans le corps de la requête.  Évidemment le flash player ne procède pas de cette façon.  Les données sont envoyées en multipart/form-data, ce qui est l'équivalent d'un formulaire d'upload HTML.  J'ai donc modifié mon action struts en conséquence.  J'ai réessayé à nouveau et là j'avais toujours une Exception qui était lancé : Stream ended unexpectedly.

Comme si le Flash Player n'envoyait pas le fichier à uploader en entier.  Après beaucoup de gossage.  Je me suis rendu compte qu'en fait le Flash Player fait deux requêtes au serveur lorsque l'on invoque la méthode upload.  La première est tout simplement une requête vide n'ayant même pas un octet !  Par contre la deuxième requête est la bonne. J'ai dû rajouter ce petit hack dans mon action Struts :


Java
if(request.getContentLength() == 0) return null;

J'ai finalement réussi à tout faire fonctionné, mais en beacoup plus long que prévu.  Je me demande si cette classe à bien été testé ?

jeudi 13 octobre 2005

Build JDK 6.0 on Windows XP

Pour ceux que ça l'intéresse, voici un comment faire un build du JDK 6.0 sur Window XP.

Building the JDK 6.0 on Window XP