Depuis Flash 8, l'utilisation de l'API ExternalInterface fait des merveilles pour communiquer avec le navigateur.

Ceci dit, je n'aime pas trop la façon de procéder, bien trop loin des développement Remoting par exemple que j'utilise le plus souvent.
L'idée m'est donc venue de mélanger un peu tout ça, bien secouer et créer une petite librairie Javascript qui me permet maintenant de communiquer avec Javascript de manière beaucoup plus clair.

Le coté ActionScript possède donc un lot de classes "net.customactions.fever.io.js" permettant de définir / créer etc des "services" Javascript.
Le coté Javascript se charge de réaliser la connexion au lancement entre le swf ciblé et le browser et bien entendu d'implementer le service en question.

l'URLValidator de Fever fonctionne d'ailleurs sur ce principe en appelant une méthode du service Javascript de base "FlashService" (test si l'url proposée est accessible ou non via une requete XmlHttpRequest)
La vérifation syntaxique via les RegExp de Javascript se passe sur le même modèle.

Outre la communication entre le browser et Flash, je me suis amusé à implementer pas mal de chose dans ce framework.

  • Portage de l'Event API de Pixlib
  • Fini les "include" et bien venu au loading dynamique de fichier js via XmlHttpRequest(voir l'exemple ci dessous)
  • Insertion des swf avec options (no cache, ajout de propriété FlashVars, dimension...)
  • Récupération des variables URL
  • ...

Un exemple de développement complet avec le coté Fever javascript est dispo ici : http://www.customactions.net/fever/src/JSSide.php

Au final un truc assez complet...mais......assez veillot aussi :(
En effet, le coté Javascript a été développé il y a pas mal de temps déjà...et je pense qu'on peut largement mieux faire maintenant....
D'ailleurs je pense que je vais essayer de contacter quelques codeurs javascript question de savoir s'ils peuvent y jeter un oeil. (si qqun est interessé ?)
Et je ne suis pas très sûr de la propreté de l'ensemble....a voir donc...

Je jette donc un regard critique la dessus, et je vous tiens au courant ultérieurement... ;)

Stay tuned !