Flash dans XUL
Il fallait bien que j’essaye d’intégrer du Flash dans du XUL et que ça communique. C’est chose faite.
Préparer le XULRunner
Tout d’abord, j’ai récupéré :
- le XULRunner 1.8.0.4 pour Windows
- le fichier npswf32.dll qui est dans mon firefox à l’adresse
C:\Program Files\Mozilla Firefox\plugins pswf32.dll
Cette DLL sert à afficher les SWF, la mienne est un Flash Player 9. Je l’ai mis dans dossier_xulrunner/plugins/
.
Voilà, mon XULRunner est prêt.
Créer une application XUL
Ce qui est en fond blanc, c’est du Flash :
La partie importante, c’est ça :
<html:object id="flash" type="application/x-shockwave-flash" data="test.swf" width="350" height="300">
<html:param name="allowScriptAccess" value="always" />
</html:object>
J’ai simplement déclaré le namespace xmlns:html="http://www.w3.org/1999/xhtml"
et utilisé la balise <object>
comme dans une page HTML, sans oublier le allowScriptAccess nécessaire pour la communication.
Et le Javascript :
function send()
{
var myFlash = document.getElementById("flash");
var myCommand = document.getElementById("command");
myFlash.sendMessageToFlash(myCommand.value);
}
function getMessageFromFlash(pMessage)
{
alert("From Flash : "+pMessage);
}
Là vous voyez qu’on lance carrément une fonction sur l’élément HTML. C’est possible depuis les fameux ExternalInterface de Flash 8. Sinon il y a bien l’ancienne méthode Javascript mais depuis que Linux a son Flash Player 9, on s’en fout :) .
Création du Flash
Je compile donc en Flash 8 avec mtasc.
Flash lance une fonction javascript en faisant :
ExternalInterface.call("getMessageFromFlash", "coucou");
Par contre, pour que Javascript lance une fonction Flash, il faut la déclarer :
ExternalInterface.addCallback("sendMessageToFlash", this, this.la_fonction);
Conclusion
La communication se fait bien. J’arrive à lancer une fonction Flash depuis Javascript avec un paramètre et inversement. Ca marche sur Windows, Mac et Linux à condition de bien préparer le XULRunner pour lire du Flash 8.
Je n’ai pas vraiment réfléchi à quoi ça pourrait me servir, mais vous devriez avoir des idées, futés comme vous êtes :) .
Flash pourrait exploiter les XPCOM, utiliser une base SQLite, accéder au disque, etc. Bref, le Apollo du pauvre lol. Quoique …
Télécharger les sources (600ko, Il y a tout sauf le XULRunner)
Commentaires