Il est tout à fait possible de passer des paramètres à une fonction JavaScript depuis notre animation Flash. En effet la méthode call de la classe ExternalInterface prend un nombre non définit de paramètre optionnel.

Voici donc comment communiquer le contenu d'un TextInput à notre page HTML et à une fonction JavaScript:

private function onClick():void
{
      ExternalInterface.call("appelJSFromAS", this.textinput.text);
}
Nous transmettons donc à la fonction appelJSFromAS le contenu du composant textinput. il faut donc créer cette fonction côté JavaScript. Pour cela dans la page HTML qui instancie notre application nous l'ajoutons. Sous Flex Builder, lors de la création d'un projet Flex, il y a un dossier html-template qui contient le squelette de la page HTML qui sert à la génération de la page HTML finale. il s'agit de index.template.html, c'est ici que vous devez faire vos modifications, ainsi à cahque compilation le code JavaScript est bien présent sur votre fichier de sortie, sinon vous devrez réécrire après chaque compilation cette partie du code.

Voici, la fonction:

function appelJSFromAS(param)
{
    alert(param);
}
Et voila, une popup JavaScript apparait avec votre texte tapé depuis l'application Flex!

Maintenant voyons comment effectuer le chemin inverse, c'est à dire appeler une méthode ActionScript depuis une fonction JavaScript. Pour cela il faut préparer le terrain côté Flex pour lui indiquer qu'il est susceptible de recevoir des infos depuis le JavaScipt, pour cela à l'initialisation, il suffit d'ajouter une fonction callback(lors de l'event creationComplete par exemple):

ExternalInterface.addCallback("appelASFromJS", callBackASFromJS);
Ainsi dès que Flex recevra un appel externe vers une méthode nommée appelASFromJS il la renverra vers la fonction callback callBackASFromJS. Il suffit alors de coder cette méthode:

private function callBackASFromJS(param:String):void
{
       Alert.show(param);
}
Vous remarquez que je prévois d'envoyer un paramètre depuis la fonction JavaScript vers la méthode ActionScript! Alors voyons à présent comment appeler cette méthode dans le code JavaScript, pour cela une simple ligne suffit, graçe au DOM, nous récupérons l'instance de notre application Flex et nous utilisons le nom de la méthode définit:

document.CallJS.appelASFromJS("vous avez bien clické sur la fenêtre JavaScript");
CallJS étant le nom donné à mon instance, et entre parenthèse le paramètre à passer. Et voila le tour est joué!
Pour information la page index.template.html utilisée avec Flex Builder instancie l'application avec le nom du projet que vous avez créé.

Pour finir voici la démo: