Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Utilisation de l'API externe > Utilisation de la classe ExternalInterface > Appel du code ActionScript à partir du conteneur | |||
Un conteneur peut uniquement appeler du code ActionScript compris dans une fonction, et aucun autre code ActionScript. Pour appeler une fonction ActionScript à partir de l'application conteneur, deux opérations sont nécessaires : enregistrer la fonction auprès de la classe ExternalInterface, puis l'appeler à partir du code du conteneur.
Dans un premier temps, vous devez enregistrer votre fonction ActionScript pour indiquer qu'elle doit être mise à disposition du conteneur. Pour ce faire, utilisez la méthode ExternalInterface.addCallback() comme suit :
function callMe(name:String):String
{
return "busy signal";
}
ExternalInterface.addCallback("myFunction", callMe);
La méthode addCallback() prend deux paramètres : le premier, un nom de fonction sous forme de chaîne, correspond au nom de la fonction pour le conteneur. Le second paramètre est la fonction ActionScript elle-même, qui doit s'exécuter lorsque le conteneur appelle le nom de fonction défini. Comme ces noms sont différents, le nom que le conteneur utilise peut être différent du véritable nom de la fonction ActionScript. Cela vous servira particulièrement si vous ne connaissez pas le nom de la fonction, par exemple si une fonction anonyme est spécifiée ou si la fonction à appeler est déterminée au moment de l'exécution.
Une fois que la fonction ActionScript a été enregistrée auprès de la classe ExternalInterface, le conteneur peut alors appeler la fonction. La procédure d'appel varie en fonction du type de conteneur. Par exemple, si le conteneur est du code JavaScript dans un navigateur, la fonction ActionScript est appelée avec le nom de fonction enregistré, comme s'il s'agissait d'une méthode de l'objet de navigateur Flash Player (c'est-à-dire une méthode de l'objet JavaScript représentant la balise object ou embed). En d'autres termes, les paramètres sont transmis et le résultat est renvoyé comme si une fonction locale était appelée.
<script language="JavaScript">
// callResult gets the value "busy signal"
var callResult = flashObject.myFunction("my name");
</script>
...
<object id="flashObject"...>
...
<embed name="flashObject".../>
</object>
Si vous appelez une fonction ActionScript dans un fichier SWF exécuté dans une application de bureau, le nom de fonction enregistré et les éventuels paramètres doivent être sérialisés dans une chaîne au format XML. L'appel s'effectue alors sur la méthode CallFunction() du contrôle ActiveX avec comme paramètre la chaîne XML obtenue. Pour plus d'informations sur le format XML utilisé pour cette communication, voir Format XML de l'API externe.
Dans les deux cas, la valeur de retour de la fonction ActionScript est retransmise au code du conteneur, directement sous forme de valeur si l'appelant est un code JavaScript dans un navigateur ou sous forme de chaîne XML s'il s'agit d'un conteneur ActiveX.
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000343.html