ActionScript: Socket.writeUTFBytes ne marche pas

Pendant de nombreuses heures, j’ai chercher à faire marcher les Sockets d’ActionScript. Ceux-ci ne marchaient pas, alors que le policyfile était chargé, il y a avait même un socket policy file server de mis en place, et le policyfile.txt ne m’affichais que des résultats positifs. Encore plus impressionnant, le socket créait une connexion mais les différentes commandes que je souhaitait envoyer ne passaient pas… C’est pourquoi, au bout d’un moment, j’ai utiliser Wireshark pour analyser les différents paquets envoyés. C’est avec celui-ci que j’ai pu voir que uniquement des paquets ACK et SYN étaient envoyés entre le client (via le Flash) et le serveur (socket). Ceux-ci étaient responsables de la connexion établie.

Seulement, les paquets réseau PSH (pour Push) qui envoient les commandes n’étaient pas créés, pas même de paquets déformés contenant mes commandes. Je suis sur Ubuntu 64bits, avec un Flash Player 10, version débuguage 32bits. Donc, un petit essai sur Ubuntu 32bits avec le flash player “basique”, et… miracle, ça marche ! Windows XP, ça marche !

En fait, mon code marchait depuis longtemps mais, pas de bol, ma version du Flash Player est bugguée avec les Sockets… Par conséquent, lorsqu’il se passe des choses comme ça, essayez avec d’autres versions, d’autres environnement car il arrive que se ne soit pas votre application qui soit bugguée mais une autre ! 😉

facebooktwittergoogle_plusredditpinterestlinkedinmail

Les interfaces en ActionScript 3

L’utilisation d’interfaces produit du code à écrire en plus, et surtout à maintenir ! Néanmoins, elle sont extrêmement pratiques lorsque vous utilisez plusieurs classes qui représentent quelque chose de visuel ou qui doivent savoir faire plusieurs actions, qui ne sont pas forcément écrites de la même manière ou qui n’utilisent pas le même support (exemple: un gestionnaire de sauvegarde – il peut y en avoir une classe pour sauvegarder dans PostgreSQL, une pour MySQL, une pour XML mais qui utilisent la même interface car doivent supporter les fonctions insert, update et delete par exemple). Bref, dans ces cas là – ou pour garantir une extensibilité et une réutilisabilité importante -, pour être sûr que votre classe contient bien les bonnes fonctions, il est préférable d’utiliser des interfaces.

En ActionScript, le comportement des interfaces est le suivant:

  • Vous devez les définir dans package
  • Vous devez lister toutes les fonctions (supposées publiques) que la classe doit avoir, sans préciser leurs types (public, private, protected…)
  • Une fonction est définie par son nom, ses paramètres et sa valeur de retour
  • Une interface peut étendre une autre interface en utilisant extends
  • Une classe peut implémenter une seule interface, en utilisant implements

Continue reading Les interfaces en ActionScript 3

facebooktwittergoogle_plusredditpinterestlinkedinmail

Sockets avec Flash: Un serveur pour les “master socket policy file”

Depuis la version 9,0,125 de Flash Player, toutes les connexions à l’aide de Sockets font objet de mesures de sécurité supplémentaires. Dorénavant n’importe quelle connexion utilisant les Sockets devront être explicitement autorisées par le serveur vers lequel la connexion Socket s’effectuera pour le serveur hôte du ficher SWF. C’est-à-dire que, par exemple, si vous hébergez votre fichier Flash (.swf) sur le domaine static.example.com et que la connexion se fait sur le port XX du serveur socks.examples.com, alors il faudra créer un socket sur le port 843 qui retournera le fichier de sécurité (de la même forme de les crossdomain.xml que l’on connait pour les URLs), appelé le “master socket policy file”.

Cette contrainte est apparue depuis la version 9 de Flash Player, et est néanmoins moins restrictives sur ces versions car l’on peut utiliser les Security.loadPolicyFile() pour charger des fichiers de sécurité pour les sockets, alors que dans les versions 10, il faudra un “master policy file”.

C’est pourquoi, il faut dès à présent mieux d’implanter cette fonctionnalité sur votre serveur en créant simplement un petit deamon sur le port 843 qui retournera le fichier de sécurité lors de la requête <policy-file-request/> suivie d’un caractère NULL. Si vous souhaitez créer votre propre “master socket policy file”, faites-le, vous pouvez le faire dans presque n’importe quel langage. Seulement, un développeur de Adobe (société éditrice de Flash) propose un script en Python et en PERL. Nous allons voir comment installer le script PERL, langage qui est installé sur quasiment tous les serveurs, sans même que l’on ne l’ai forcément installer.
Continue reading Sockets avec Flash: Un serveur pour les “master socket policy file”

facebooktwittergoogle_plusredditpinterestlinkedinmail

ActionScript: Le TimeStamp Unix

Gérer le timestamp UNIX dans ActionScript n’est pas très dur, même si ce n’est pas la méthode “classique” de gérer les dates, contrairement à PHP.

Timestamp actuel

Attention: Ça sera le timestamp client ! C’est-à-dire que si le visiteur n’est pas sur le même fuseau horraire, ça peut poser de nombreux problèmes de syncronisité si vous l’utilisez directement pour vos données.

Conversion

Pour transformer un timestamp en une date, faites ainsi :

facebooktwittergoogle_plusredditpinterestlinkedinmail

Programmez en AS3 depuis Flex Builder sans utiliser Flex

Flex est un langage de programmation permettant de créer des applications Flash de manière assez simple en utilisant du XML et de l’Action Script 3.0 – depuis Flex 2.0. Cependant, les – très – nombreuses librairies inclues à Flex lui donne un réel problème : le poids des applications créées. En effet, développer une application qui utilise quelques composants tels que Canvas, ProgressBar, etc… donne à cette même application Flex une taille plus ou moins importante, allant de quelques Ko à plusieurs centaines voire milliers de Ko

J’ai longtemps utiliser Flex pour toutes mes applications Flash, plus ou moins complexes. Seulement, force est de constater que le premier chargement est très long, ce qui n’est pas toujours justifié.. De plus, je me suis rendu compte que ce que j’utilisait dans Flex c’était l’Action Script et que je n’avais que quelques dixaines de lignes d’XML qui servaient uniquement à définir les paramètres de l’application (taille, scrollbars…) et la structure primaire de l’interface. C’est pourquoi j’ai décider de développer directement en Action Script (3.0). Continue reading Programmez en AS3 depuis Flex Builder sans utiliser Flex

facebooktwittergoogle_plusredditpinterestlinkedinmail

Flex/ActionScript 3: Accèder a un élément précis d’un XML

En Flex, pour accèder à un élement précis d’une chaine XML, c’est pas très dur mais il faut le savoir. J’ai chercher pendant 1h comment faire alors je vous le partage, ça peux faire gagner du temps à quelques personnes. Continue reading Flex/ActionScript 3: Accèder a un élément précis d’un XML

facebooktwittergoogle_plusredditpinterestlinkedinmail

ActionScript : La même chose que foreach en PHP

Salut à tous !

Vous avez surement constater qu’il n’y a pas la simple fonction foreach (présente dans PHP) en ActionScript ! C’est pourtant une chose très utile car elle permet d’analyser un tableau associatif sans connaitre ni la forme de la clée ni de la valeur !

Chose que les développeurs d’Adobe n’ont pas du tout oublier ! Ils l’ont simplement inclue dans la boucle for. Continue reading ActionScript : La même chose que foreach en PHP

facebooktwittergoogle_plusredditpinterestlinkedinmail

ActionScript 3.0 : Transformer une chaine en nombre

Nombre de fois vous avez surement chercher comme transformer une chaine de caractère en nombre. Il se trouve en effet dans les cas où par exemple, on charge un XML, on le parse et vous avez des attributs sensés contenir des nombres or, il donne des variables de la forme string…

De plus, si vous faites :

La variable nombre sera égale à… 0 ! Continue reading ActionScript 3.0 : Transformer une chaine en nombre

facebooktwittergoogle_plusredditpinterestlinkedinmail