Avertissement Ce qui suit sera fonctionnel sur la prochaine version d'instrumenpoche : 2.5
Lorsqu'Instrumenpoche est inséré dans une page HTML, il est possible d'accéder aux objets qu'il contient par javascript.
Trois fonctions permettent d'accéder au contenu d'instrumenpoche : la première permet de lire une propriété d'un objet d'instrumenpoche, la deuxième permet de modifier une propriété et la troisième d'exécuter une fonction contenue dans instrumenpoche. Une quatrième fonction (iep_loaded()
) est automatiquement appelée au chargement d'instrumenpoche.
Pour avoir la liste des classes d'instrumenpoche et les propriétés et méthodes qu'elles contiennent, voir la page d'accueil pour les développeurs.
Pour utiliser les fonctions de communication avec instrumenpoche, il est nécessaire d'y avoir accès. Pour cela, on peut définir une fonction qui renvoie une animation Flash contenue dans la page, connaissant son nom. Celle-ci peut être :
function thisMovie(movieName) { var isIE = navigator.appName.indexOf("Microsoft") != -1; return (isIE) ? window[movieName] : document[movieName]; }
Ainsi, si le fichier SWF d'instrumenpoche se nomme iep
, on pourra y avoir accès par :
thisMovie("iep")
Le nom est iep
lorsque l'animation est par exemple incluse dans la page HTML par :
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="800" height="600" id="iep" align="middle"> <param name="allowScriptAccess" value="always" /> <param name="allowFullScreen" value="true" /> <param name='Flashvars' value='iep_anim_echap=' /> <param name="movie" value="iep.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="iep.swf" Flashvars='iep_anim_echap=' quality="high" bgcolor="#ffffff" width="800" height="600" name="iep" align="middle" wmode="window" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_fr" /> </object>
La fonction permettant de lire une propriété est :
get_iep(objet,propriété)
Où objet
est un texte désignant l'objet contenant le propriété, et le deuxième argument est un texte désignant la propriété voulue.
Par exemple, en détectant instrumenpoche comme ci-dessus, on peut afficher l'abscisse du crayon par :
alert(thisMovie("iep").get_iep("CrayonIep.crayon","_x"));
La fonction permettant de lire une propriété est :
set_iep(objet,propriété,valeur)
Où objet
est un texte désignant l'objet contenant le propriété, et le deuxième argument est un texte désignant la propriété voulue et le troisième la valeur qu'on veut donner à la propriété.
Par exemple, en détectant instrumenpoche comme ci-dessus, on peut modifier l'abscisse du crayon par :
thisMovie("iep").set_iep("CrayonIep.crayon","_x",500);
Attention le troisième argument de la fonction est la valeur, et non un texte la désignant. Par exemple, dans
thisMovie("iep").set_iep("CrayonIep.crayon","_visible","true"); thisMovie("iep").set_iep("CrayonIep.crayon","_visible",true);
seule la deuxième ligne est correcte.
La fonction javascript permettant d'appeler une fonction d'instrumenpoche est :
exec_iep(fonction,paramètres)
où fonction
est un texte désignant la fonction et paramètres
un tableau donnant les paramètres à passer à cette fonction. Il faut donner un tableau même si la fonction ne demande qu'un seul paramètre.
Exemple
thisMovie("iep").exec_iep("UtilitairesIep.alerte",["ok"])
utilise la fonction d'affichage de messages interne à instrumenpoche pour afficher “ok”.
Autre exemple
thisMovie("iep").exec_iep("ImagesIep.charger_image", ["http://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Gaucho_in_action.jpg/800px-Gaucho_in_action.jpg", 1])
charge une image dans instrumenpoche sans que cela modifie le script de l'animation.
Dès que iep.swf est complètement chargé, la fonction javascript iep_loaded()
est appelée. Pour effectuer une opération juste après le chargement d'instrumenpoche, il suffit donc de définir dans la page HTML une fonction iep_loaded()
qui exécutera les instructions voulues.
Exemple
function iep_loaded(){ // j'annonce qu'instrumenpoche et complètement chargé alert("iep est chargé !"); }