Pour appeler une fonction Javascript à partir d'une application Flex:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="30%" applicationComplete="initApp()">
<mx:Script>
<![CDATA[
import flash.external.ExternalInterface;
private function FlexFromJS():void
{
mytext.text = ExternalInterface.call("FlexFromJS");
}
]]>
</mx:Script>
<mx:TextInput x="235" y="10" id="mytext" width="190"/>
<mx:Button x="235" y="40" label="Récupérer variable de JS" width="190" click="FlexFromJS();"/>
</mx:Application>
Sources:
Fichier MXML
HTML
Pour appeler une fonction Flex à partir de Javascript:
Il faut en premier lieu définir l'interface disponible à partir de JS, en effet, les méthodes ne sont pas directement apellables dans un souci de sécurité.
Pour la définir on utilise:
ExternalInterface.addCallback(methodName:String, method:Method);
Où methodName est le nom de la méthode à appeler à partir de JS et où method est le nom de la méthode effectivement appelé dans Flex.
C'est donc une sorte de mapping de fonctions. Ce mapping est à affectuer à l'initialisation de l'application (applicationComplete="init()")
Ensuite, sous JS, en fonction du navigateur utilisé les méthodes a appeller sont :
window[monAppli].methodName() pour IE
document[monAppli].methodName() pour Firefox
où monAppli est le nom de l'objet flex importé.
<script language="JavaScript">
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[movieName];
}
else
{
return document[movieName];
}
}
function sendToActionScript(value)
{
thisMovie("ExternalInterfaceExample").sendToActionScript(value);
}
</script>
Sources:
JStoFlex2.mxml
JStoFlex2.html
Exemple:
JStoFlex2





