Insérer SWFObject dans un module

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Insérer SWFObject dans un module

    Bonjour,
    ma question fait suite à mon précédent sujet (génération de fichier XML).
    J'aimerai intégrer une application flash de visite virtuelle dans mon module, celui-ci est chargé d'effectuer une vérification d'un identifiant envoyé en paramètre par une carte google maps pour afficher les images d'un spot sélectionné dans l'application .
    J'ai un petit problème pour insérer l'objet flash, en fait je n'utilise pas une application proposée dans la bibliothèque Joomla, mais un player flash que j'adapte dans un module.
    J'utilise SWFObject pour l'intégrer sur ma page.
    Pour faire simple, l'appli flash possède un fichier de configuration XML (celui dont j'ai parlé dans mon précédent sujet) qui permet de récupérer les images dynamiquement, en fonction de l'identifiant envoyé.

    J'ai un problème cependant, j'ai repris ce qui avait été fait sur une page d'index fournie avec l'objet flash :

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    						<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    						<head>
    
    							<title><?php echo ' Visite virtuelle ';?></title>
    
    							<style type="text/css">
    								h1 { font-size:25px; margin:0;}
    								h2 { margin:2px auto 14px; font-size:18px; font-style:italic; font-weight:normal; padding-bottom: 10px; border-bottom:2px solid #fff;}
    								#main { position:relative;width:730px; margin:auto;}
    								#auteur { position:relative; width:200px; float:right; text-align:right;}
    								#panorama { padding:14px; border:1px solid #fff; }
    							</style>
    							
    							<script type="text/javascript" src="swfobject.js"></script>
    							
    							<script type="text/javascript">
    							swfobject.embedSWF("panorama360.swf", "myContent", "700", "450", "10.0.0");
    							</script>
    							
    						</head>
    						
    						<body>
    
    						<div id="main">
    
    							<h1>test</h1>
    
    							<div id="panorama">
    							<div id="myContent">
    								<p>L'aperçu des curseurs nécessite d'avoir Adobe Flash Player.<br/><br/><a href="http://www.adobe.com/go/getflashplayer/">Vous pouvez le telecharger sur le site d'Adobe.</a></p>
    							</div>
    							</div>
    							<p>Naviguez dans le panorama en maintenant le clic gauche enfoncé tout en déplaçant le curseur.<br/>Vous pouvez utiliser la molette pour zoomer.</p>
    
    						</div>
    						</body>
    						</html>
    Donc en fait, lorsque je vérifie mon identifiant je fais apparaître cela une fois qu'on a trouvé les images dans la base de données, qui correspondent à l'identifiant.
    Le problème c'est que j'ai du mal à inclure le swfobject dans l'entête, ou pour être plus exact, la fonction swobject.embed.

    Vu que ça ne marchait pas si je laissais le code HTML tel quel, j'ai écris pour simplifier :


    $doc =& JFactory::getDocument();
    $doc->addScript('modules/mod_visitevirtuelle/swfobject.js');
    $doc->addScript('modules/mod_visitevirtuelle/swf.js');
    $doc->addStyleSheet('modules/mod_visitevirtuelle/style.css');

    Pour le swfobject, aucun soucis, il apparaît bien dans l'entête quand je vérifie la page dans le navigateur, le style CSS pareil.
    Par contre, je ne vois pas comment faire pour le <script type="text/javascript">
    swfobject.embedSWF("panorama360.swf", "myContent", "700", "450", "10.0.0");
    </script>


    J'ai mis le bout de code dans un fichier appelé swf.js mais ça ne donne rien de plus.
    J'ai essayé de plusieurs façons, en faisant des echos, en essayant d'intégrer le swfobject de manière statique avec des balises <object>, mais rien n'y fait.

    L'encadré qui accueille l'objet flash reste vide, et je ne vois vraiment pas comment je pourrais inclure la fonction swobject.embedSWF.

    Je tiens à préciser que j'ai jeté à un oeil au module SWFObject disponible dans la bibliothèque, il fonctionne (l'appli flash se charge) mais je ne souhaite pas l'utiliser, cela me forcerait à refaire mon code dedans en utilisant ce qui a déja été codé.
    Pourriez vous m'aider pour cette histoire d'inclusion s'il vous plait ?

    Je vous remercie d'avance pour votre réponse,

    Magicorange

  • #2
    Re : Insérer SWFObject dans un module

    Je pense avoir trouvé en fait la fonction qu'il me fallait , mais je ne suis pas certain que ça marchera au final:
    $doc->addScriptDeclaration("swfobject.embed.....");, le problème c'est que lorsque j'écris cette ligne (après le addScript(chemin du swfobject) ) ma page ne se charge plus du tout, j'ai pourtant bien vérifié le chemin que j'ai écris dedans, mais la page s'arrête de charger à cette ligne.
    Une petite idée ?

    EDIT : Ok, ça risquait pas de marcher en écrivant addScriptDeclaratation xD
    Bon, du coup ma page charge bien, mais aucun signe de l'appli flash :s
    "Animation non chargée" sous IE9 et sous Firefox rien n'apparaît, pourtant la ligne swfobject.embed apparaît bien lorsque je regarde le code.

    EDIT 2 : Ca y est j'ai réussi à faire charger l'animation !
    Il fallait que j'ajoute JURI:base() dans le chemin en paramètre du swfobject.embed !

    Je ne mets pas tout de suite le sujet en "réglé" car j'aurais peut être une autre question par la suite.
    Dernière édition par Magicorange à 11/06/2012, 11h27

    Commentaire


    • #3
      Re : Insérer SWFObject dans un module

      Bonjour, en fait j'ai encore un problème avec le fichier Flash.
      L'animation reste bloquée sur "Loading" ce qui est normal lorsque l'appli ne trouve pas les images à charger.
      Mais ce que je ne comprends pas, c'est que le fichier XML que je génère via le code PHP contient les bons chemins vers les images (j'ai vérifié avec un echo de l'image), et que pour trouver les images, l'appli flash va se réferer au fichier XML.
      Le problème c'est que l'on dirait que l'application n'arrive pas à trouver le fichier XML, j'ai d'abord pensé que c'était à cause des chemins, j'ai donc essayé des liens relatifs, absolus... mais ce n'était pas ça, puis je me suis dit que j'allais voir du côté du code Flash.

      L'application n'étant pas la mienne, j'ai du la décompiler au format fla pour l'ouvrir sous Adobe Flash et regarder son code.
      J'ai vu que le chemin qui mène au fichier xml est "config.xml", donc relatif. J'ai donc essayé de changer le chemin en "/modules/mod_visitevirtuelle/config.xml".
      Le problème c'est qu'en décompilant le fichier swf et en compilant le fla avec le nouveau chemin j'obtiens des erreurs (de syntaxe et autres), et l'application ne semble pas plus marcher. Et même sans changer le chemin, juste en décompilant/recompilant, l'application ne marche plus (écran noir, sans loading ni rien).
      Je vais essayer de modifier le code directement depuis le swf avec SWF Quicker pour voir si cela améliore la situation.

      Mais avant tout ,j'aimerais savoir, lorsque l'on doit spécifier un chemin vers un fichier contenu dans le répertoire du module, à partir d'un autre fichier du même repertoire, doit-on utiliser la syntaxe JURI::base()/module/mod_truc/fichier (je doute que cela soit valide en Flash) qui revient à faire un chemin absolu, ou peut-on le faire en relatif (donc garder le "config.xml" ) ?
      Car si l'on peut le faire en relatif, cela veut dire que mon problème de chargement d'images ne vient pas de là...

      Le fichier swf est dans le même répertoire que le xml, je ne comprends vraiment pas d'où vient le problème...
      Dernière édition par Magicorange à 13/06/2012, 13h10

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X