Appel de code externe à partir d'ActionScript

La méthode ExternalInterface.call() exécute le code dans l'application conteneur. Elle requiert au moins un paramètre, une chaîne contenant le nom de la fonction à appeler dans cette application. Tout paramètre supplémentaire transmis à la méthode ExternalInterface.call() est retransmis au conteneur comme paramètres de l'appel de fonction.

// Appelle la fonction externe "addNumbers".
// Transmission de deux paramètres et affectation du résultat de cette fonction
// à la variable "result".
var param1:uint = 3;
var param2:uint = 7;
var result:uint = ExternalInterface.call("addNumbers", param1, param2);

Si le conteneur est une page HTML, la méthode appelle la fonction JavaScript avec le nom spécifié, qui doit être défini dans un élément script de la page HTML. La valeur de retour de la fonction JavaScript est retransmise à ActionScript.

<script language="JavaScript">
    // ajoute deux nombres et envoie le résultat à ActionScript
    function addNumbers(num1, num2)
    {
        return (num1 + num2);
    }
</script>

Si le conteneur est un autre conteneur ActiveX, le contrôle ActiveX Flash Player distribue alors son événement FlashCall. Flash Player sérialise le nom de fonction spécifié et les éventuels paramètres dans une chaîne XML. Le conteneur peut accéder à ces informations dans la propriété request de l'objet événement, puis les utiliser pour déterminer comment il doit exécuter son propre code. Pour renvoyer une valeur à ActionScript, le code conteneur appelle la méthode SetReturnValue() de l'objet ActiveX et transmet le résultat (sérialisé dans une chaîne XML) comme paramètre de cette méthode. Pour plus d'informations sur le format XML utilisé pour cette communication, voir Format XML de l'API externe.

Que le conteneur soit un navigateur Web ou un autre conteneur ActiveX, si l'appel échoue ou que la méthode conteneur ne spécifie aucune valeur de retour, la valeur null est alors renvoyée. La méthode ExternalInterface.call() renvoie une exception SecurityError si l'environnement conteneur appartient à un sandbox de sécurité auquel le code appelant n'a pas accès. Vous pouvez contourner ce problème en attribuant à allowScriptAccess une valeur adaptée dans l'environnement conteneur. Par exemple, vous changez la valeur de allowScriptAccess dans une page HTML, vous devez modifier l'attribut approprié dans les balises object et embed.


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/00000342.html