Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

23juin/080

Flex External Interface – Utilisation générale d'ExternalInterface

La classe flash.external.ExernalInterface définit deux méthodes static, appelées call() et addCallback(), qui permettent la communication Flex vers host-application et host-application vers Flex respectivement.

La méthode call() vous permet d'appeler une méthode de l'application sur laquelle se trouve l'application Flex (host application) en lui passant le nom d'une méthode. Si l'host-application attend des paramètres, vous pouvez les passer dans la méthode call() après le nom de la méthode à appeler. Par exemple, le code suivant appelle la fonction JavaScript alert() quand l'application Flex est lancée depuis un navigateur web:

ExternalInterface.call("alert", "Message de test depuis Flex");

La méthode call() marche de manière synchrone. Par exemple, la fonction JavaScript confirm() crée une nouvelle boîte de dialogue avec les boutons OK et Cancel. Cette boite de dialogue confirm met l'application en pause jusqu'à ce que l'utilisateur clique sur un bouton, et retourne true (OK) ou false (Cancel).

var option:Boolean = ExternalInterface.call("confirm", "Voulez vous vraiment fermer l'application?");

Bien sûr, les fonctions de l'host application peuvent être des fonctions personnalisées.

Si vous voulez appeler une méthode Flex depuis l'host application, vous devez enregistrer cette méthode dans l'application Flex en utilisant ExternalInterface.addCallBack(). La méthode addCallback() vous permet d'enregistrer une méthode ou une fonction avec un alias par lequel la méthode ou fonction peut être appelée depuis l'host application.

Par exemple, l'extrait de code suivant enregistre Alert.show comme showAlert:

ExternalInterface.addCallback("showAlert", Alert.show);

Vous pouvez ensuite appeler la méthode Alert.show par l'alias showAlert depuis l'application host.

A l'intérieur de l'application qui contient le SWF, vous devez récupérer une référence vers l'instance de Flash Player qui lit le SWF. Vous pouvez ensuite appeler la méthode par son alias directement depuis cette référence. Par exemple, si getApplicationReference() est une fonction de l'host application qui retourne une référence vers l'instance de Flash Player, ce code lande une alert:

 getApplicationReference().showAlert("Message d'alerte depuis l'application host");

En JavaScript, la référence vers FlashPlayer est différente suivant le type de navigateur (IE ou non-IE, par exemple Mozilla Firefox). Dans IE, vous pouvez récupérer une référence vers l'instance de Flash Player avec window.id, où "id" est la valeur du paramètre "id" du tag <object>. Dans les navigateurs type Firefox, la référence est document.name où "name" est la valeur de l'attribut "name" du tag <embed>.

La fonction JavaScript suivante détermine le type de navigateur et retourne la bonne référence pour lesquelles les paramètres "id" et l'attribut "name" sont "Exemple".

function getApplicationReference(){
	if(navigator.appName.indexOf("Microsoft") != -1){
		return window.Exemple;
	}else{
		return document.Exemple;
	}
}

Pour les utilisateurs de Flex Builder (ou du plugin Eclipse), la page HTML générée automatiquement avec les applications dans le répertoire bin contient ces référence (id et name). Par défaut, ils ont la même valeur que le nom du MXML principal. Vous pouvez donc remplacer "Exemple" par le nom de votre MXML Application dans le code JavaScript ci-dessus.

Exemples:

Articles similaires

Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Leave a comment

(required)

Aucun trackbacks pour l'instant