bensor Posté(e) le 28 février 2008 Partager Posté(e) le 28 février 2008 Bonjour, Voilà, j'ai une animation Flash laquelle doit être influencée en javascript par un simple bouton. Par influencée, je veux dire qu'une fonction ActionScript 2.0 doit être executée. Pour cela j'ai utilisé ExternalInterface.addCallBack(). Cela marche parfaitement sur Firefox deuxième du nom, mais sur IE 7 j'ai une belle erreur "Cet objet ne gère pas cette propriété ou cette méthode". J'ai cru comprendre que pour que cela marche sur IE7 il fallait rajouter un timer et eviter de nommer la fonction AS comme la fonction JS, ce que j'ai fait, mais rien <script type="text/javascript"> function callExternalInterface(element) { document[element].jsAction(); } </script> <embed id="root" width="304" height="60" allowscriptaccess="always" quality="high" bgcolor="#EDE9E7" name="root" src="anim.swf" type="application/x-shockwave-flash"/> <button onClick="callExternalInterface('root');">Clic</button> import mx.controls.Alert; import flash.external.*; delInterval = setInterval(doExternalInterface, 700); function doExternalInterface():Void { clearInterval(delInterval); ExternalInterface.addCallback("jsAction", null, flAction); } function flAction():Void { Alert.show('ok'); } Voyez-vous où j'ai pu me planter? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 28 février 2008 Partager Posté(e) le 28 février 2008 Bonjour, Je m'y connais très peu en AS2, et quasi pas en JS. Mais si ton code marche sous Firefox, cela signifie, je pense, que le code AS est bon. Le problème devrait donc plutôt venir du code JS. Dis-moi, ton Alert.show('ok');, c'est bien du code JS ? Dans ce cas, c'est pas plutôt alert("ok"); ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 28 février 2008 Auteur Partager Posté(e) le 28 février 2008 Dis-moi, ton Alert.show('ok');, c'est bien du code JS ? Dans ce cas, c'est pas plutôt alert("ok"); ? Non non, ce n'est pas du code JS, mais du code AS, ça affiche une boite de dialogue façon "alert()" js dans le Flash. D'ailleurs si je mets un autre Alert.show() dans la fonction appelée par le timer la boite s'affiche, que ce soit sous IE 7 ou Fx Pour résumer ce que fait le code AS, dans un premier temps je lance un timer reglé sur 700ms qui va exécuter une fonction (doExternalInterface()), cette fonction va stopper le timer et transmettre au navigateur ce qu'il faut pour interagir avec une fonction, en l'occurence flAction(), par l'intermédiaire d'une fonction Javascript "fictive" (jsAction()) qui sert de passerelle entre la page et l'animation. La dernière fonction, celle appelée par le code Javascript, affiche tout bêtement une boite de dialogue Flash (tu l'as d'ailleurs deviné). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 29 février 2008 Partager Posté(e) le 29 février 2008 D'accord. Et concernant l'<embed>, es-tu obligé de l'utiliser ? Personnellement, je travaille souvent en XHTML, et utilise un <object> plus un <param> pour que le .swf fonctionne à la fois dans IE et Firefox. Par exemple : <div> <object type="application/x-shockwave-flash" data="flash.swf" width="305" height="136"> <param name="Flash" value="flash.swf" /> </object> </div> Tu peux peut-être remplacer ton <embed> par cela ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 29 février 2008 Auteur Partager Posté(e) le 29 février 2008 C'est encore pire, rien ne s'affiche sur IE7 (en revanche, pas de problèmes sur Fx) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 29 février 2008 Partager Posté(e) le 29 février 2008 Bon ben là, je ne sais pas. Mais vu que tu n'as plus de message d'erreur, le problème vient peut-être de cette partie du code avec <embed> ... En tous cas, j'ai testé mon code avec <object> et <param>, ça fonctionne sous IE7. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 29 février 2008 Auteur Partager Posté(e) le 29 février 2008 Mais vu que tu n'as plus de message d'erreur, le problème vient peut-être de cette partie du code avec <embed> ... Si si, j'ai toujours le message d'erreur. La seule différence par rapport à avant c'est que l'animation ne s'affiche pas du tout, il y a juste un gros rectangle blanc à la place de ce qui devrait s'afficher. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 3 mars 2008 Auteur Partager Posté(e) le 3 mars 2008 Bha alors, personne d'autre? Même sur developpez.net ils sont pas fichus de me répondre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 3 mars 2008 Partager Posté(e) le 3 mars 2008 Juste histoire de ... (qui sait, ça pourra peut-être mettre quelqu'un sur une piste ) Ton message d'erreur apparait quand tu cliques sur le bouton, pas avant ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 3 mars 2008 Auteur Partager Posté(e) le 3 mars 2008 Juste histoire de ... (qui sait, ça pourra peut-être mettre quelqu'un sur une piste )Ton message d'erreur apparait quand tu cliques sur le bouton, pas avant ? Oui oui, juste quand je clique sur le bouton Lien vers le commentaire Partager sur d’autres sites More sharing options...
Allegro Posté(e) le 3 mars 2008 Partager Posté(e) le 3 mars 2008 Essaie en enlevant d'abord Alert.show('ok'); Puis document[element].jsAction(); Et sous IE6, il marche ton code ? PS : si je te casse les pieds, n'hésite pas à me le dire, je ne me vexerai pas J'insiste juste parce que ça m'intéresse ton problème. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 3 mars 2008 Auteur Partager Posté(e) le 3 mars 2008 Essaie en enlevant d'abord Alert.show('ok');Puis document[element].jsAction(); Et sous IE6, il marche ton code ? PS : si je te casse les pieds, n'hésite pas à me le dire, je ne me vexerai pas J'insiste juste parce que ça m'intéresse ton problème. Sous IE6 je ne sais pas, j'ai pas. Ensuite, il n'y a pas réellement un Alert.show('ok') mais toute autre chose, que je ne peux bien sûr pas balancer sur le web ni dire à quoi sert réellement l'anim en général. IE7 ne détecte pas la fonction JS balancée par l'AS, donc que je retire ou pas l'Alert.show() ne changera strictement rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 10 mars 2008 Partager Posté(e) le 10 mars 2008 Bonsoir ci joint un exemple de code donctionnant <script language="javascript" type="text/javascript"> var flashtest; function initialize() { /* Check if the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's window.document.videoPlayer. The videoPlayer is the id assigned to <object> and <embed> tags. */ var ie = navigator.appName.indexOf("Microsoft") != -1; flashtest = (ie) ? window['test'] : document['test']; } function appel(str) { initialize(); flashtest.asFunc(str); } </script> <script language="javascript">AC_FL_RunContent = 0;</script> <script src="js/AC_RunActiveContent.js" language="javascript"></script> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> </head> <body bgcolor="#ffffff"> <!--URL utilisées dans l'animation--> <!--texte utilisé dans l'animation--> <!-- saved from url=(0013)about:internet --> <div id="Layer1" style="position:absolute; left:647px; top:90px; width:81px; height:44px; z-index:1"><a href="#" onclick="appel('zaventem')"><wxcwxc</a></div> <script language="javascript"> if (AC_FL_RunContent == 0) { alert("Cette page nécessite le fichier AC_RunActiveContent.js."); } else { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '550', 'height', '400', 'src', 'carte_regions', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'align', 'middle', 'play', 'true', 'loop', 'true', 'scale', 'showall', 'wmode', 'window', 'devicefont', 'false', 'id', 'test', 'bgcolor', '#ffffff', 'name', 'test', 'menu', 'true', 'allowFullScreen', 'false', 'allowScriptAccess','sameDomain', 'movie', 'carte_regions', 'salign', '' ); //end AC code } </script> <noscript> <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="550" height="400" id="test" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="carte_regions.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="carte_regions.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </noscript> et côté FLA System.security.allowDomain("http://www.esimmo.com"); import flash.external.ExternalInterface; ExternalInterface.addCallback("asFunc", null, asFunc); function asFunc(str:String):Void { var dmccouleur = new Color(_root.str); dmccouleur.setRGB(0x10007b); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 10 mars 2008 Partager Posté(e) le 10 mars 2008 firefox pgm Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 11 mars 2008 Partager Posté(e) le 11 mars 2008 Oups sorry ExternalInterface.addCallback("asFunc", null, asFunc); function asFunc(str:String):Void { var dmccouleur = new Color(_root[str]); dmccouleur.setRGB(0x10007b); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 11 mars 2008 Auteur Partager Posté(e) le 11 mars 2008 Bonsoirci joint un exemple de code donctionnant <script language="javascript" type="text/javascript"> var flashtest; function initialize() { /* Check if the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's window.document.videoPlayer. The videoPlayer is the id assigned to <object> and <embed> tags. */ var ie = navigator.appName.indexOf("Microsoft") != -1; flashtest = (ie) ? window['test'] : document['test']; } function appel(str) { initialize(); flashtest.asFunc(str); } </script> <script language="javascript">AC_FL_RunContent = 0;</script> <script src="js/AC_RunActiveContent.js" language="javascript"></script> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> </head> <body bgcolor="#ffffff"> <!--URL utilisées dans l'animation--> <!--texte utilisé dans l'animation--> <!-- saved from url=(0013)about:internet --> <div id="Layer1" style="position:absolute; left:647px; top:90px; width:81px; height:44px; z-index:1"><a href="#" onclick="appel('zaventem')"><wxcwxc</a></div> <script language="javascript"> if (AC_FL_RunContent == 0) { alert("Cette page nécessite le fichier AC_RunActiveContent.js."); } else { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0', 'width', '550', 'height', '400', 'src', 'carte_regions', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'align', 'middle', 'play', 'true', 'loop', 'true', 'scale', 'showall', 'wmode', 'window', 'devicefont', 'false', 'id', 'test', 'bgcolor', '#ffffff', 'name', 'test', 'menu', 'true', 'allowFullScreen', 'false', 'allowScriptAccess','sameDomain', 'movie', 'carte_regions', 'salign', '' ); //end AC code } </script> <noscript> <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="550" height="400" id="test" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="carte_regions.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="carte_regions.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </noscript> et côté FLA System.security.allowDomain("http://www.esimmo.com"); import flash.external.ExternalInterface; ExternalInterface.addCallback("asFunc", null, asFunc); function asFunc(str:String):Void { var dmccouleur = new Color(_root.str); dmccouleur.setRGB(0x10007b); } Et tout ça ça marche sur IE7? Bizarre, étant donné que partout où je suis allé il a été dit que nommer la fonction AS et JS de la même façon ne pouvait pas fonctionner sous IE7 Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 12 mars 2008 Partager Posté(e) le 12 mars 2008 firefox pgm Bonjour, je pense que tu n'utilises pas la bonne version de AC_RunActiveContent.js Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 12 mars 2008 Partager Posté(e) le 12 mars 2008 moi ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 12 mars 2008 Partager Posté(e) le 12 mars 2008 moi ? Oui, je pense qu'avec ceci http://www.esimmo.com/Virtual/testhugues/b...ctiveContent.js cela devrait fonctionner sous firefox Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 13 mars 2008 Auteur Partager Posté(e) le 13 mars 2008 Apparement ça passe sous firefox, mais sous IE "flashroot" est undefined EDIT : Bon, j'ai fait une chtite modif : function initialize() { /* Check if the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's window.document.videoPlayer. The videoPlayer is the id assigned to <object> and <embed> tags. */ var ie = navigator.appName.indexOf("Microsoft") != -1; if (ie) { flashroot = window['root']; } else { flashroot = document['root']; } if (flashroot == undefined) { flashroot = document['root']; } //flashroot = (ie) ? window['root'] : document['root']; } Résultat, même message d'erreur qu'avant :s Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 13 mars 2008 Auteur Partager Posté(e) le 13 mars 2008 En fait, c'est IE7 qui n'arrive pas à exécuter correctement window[element] sur ma page :s Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 14 mars 2008 Partager Posté(e) le 14 mars 2008 Apparement ça passe sous firefox, mais sous IE "flashroot" est undefined EDIT : Bon, j'ai fait une chtite modif : function initialize() { /* Check if the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's window.document.videoPlayer. The videoPlayer is the id assigned to <object> and <embed> tags. */ var ie = navigator.appName.indexOf("Microsoft") != -1; if (ie) { flashroot = window['root']; } else { flashroot = document['root']; } if (flashroot == undefined) { flashroot = document['root']; } //flashroot = (ie) ? window['root'] : document['root']; } Résultat, même message d'erreur qu'avant :s un exemple de page fonctionnant http://www.esimmo.com/Virtual/testhugues/b...alisation_D.php (site en développement) Côté FLA _root.evere._visible = false; _root.schaerbeek._visible = false; _root.zaventem._visible = false; _root.boitsfort._visible = false; _root.schuman._visible = false; _root.leopold._visible = false; _root.nord._visible = false; _root.central._visible = true; _root.midi._visible = false; System.security.allowDomain("http://www.esimmo.com"); import flash.external.ExternalInterface; ExternalInterface.addCallback("mod_flash", null, mod_flash); function mod_flash(str:String,reg:String):Void { _root[str]._visible = true; _root[reg]._visible = false; } Attention à la version de AC_RunActiveContent.js Lien vers le commentaire Partager sur d’autres sites More sharing options...
senna555 Posté(e) le 14 mars 2008 Partager Posté(e) le 14 mars 2008 Apparement ça passe sous firefox, mais sous IE "flashroot" est undefined EDIT : Bon, j'ai fait une chtite modif : function initialize() { /* Check if the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's window.document.videoPlayer. The videoPlayer is the id assigned to <object> and <embed> tags. */ var ie = navigator.appName.indexOf("Microsoft") != -1; if (ie) { flashroot = window['root']; } else { flashroot = document['root']; } if (flashroot == undefined) { flashroot = document['root']; } //flashroot = (ie) ? window['root'] : document['root']; } Résultat, même message d'erreur qu'avant :s Tu n'oublies pas de déclarer flashroot comme variable globale ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 22 mars 2008 Auteur Partager Posté(e) le 22 mars 2008 Non non, je n'oublie pas. Bon, pour l'instant je n'ai plus le temps de m'en occuper, je repasserai peut-être ici prochainement Lien vers le commentaire Partager sur d’autres sites More sharing options...
bensor Posté(e) le 1 avril 2008 Auteur Partager Posté(e) le 1 avril 2008 Rien de neuf au soleil Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.