Flash : récupérer l'url de la page en cours dans un swf

WRInaute discret
Bonjour,

j'ai un site avec plusieurs page structurées de la même façon.

- un bandeau
- un menu en flash
- du contenu texte
- un menu texte en bas

mon menu en flash contient donc les liens aux autres pages mais je voudrais qu'il affiche aussi le titre de la page en cours.
les clips ont été créés.

Je cherche dons un script me permettant de faire quelquechose du style :
- si la page en cours est page1.html, setProperty("_root.titrepage1", _visible, "1");
...

ou alors de faire passer la variable page='page1' de la page html au swf. et faire ensuite un truc du style : si $page = page1 - setProperty("_root.titrepage1", _visible, "1");


Voilà, si quelqu'un sait comment faire.
Merci de m'aider, s'il vous plait.
 
WRInaute impliqué
tu generes ton html avec un php qui va ecrire un truc dans ce style la :

VALUE="flaMovie1.swf?page=1"

et dans le flash tu récuperes la variable comme ca:

trace(_root.page);

apres tu la parses comme tu veux et tu t'en sert pour afficher ton contenu spécifique.

si tu veux un exemple, regarde les titres en flash de ce blog :
-http://www.tweenpix.net/blog/
 
WRInaute discret
Merci totoshop user.

j'ai essayé ceci mais malheureusement sans succès :

-dans ma page html , dans les paramètres de mon objet flash :
Code:
 <param name="movie" value="[b]menu.swf?page=page3[/b]">
        <param name="quality" value="high">
        <embed src="[b]menu.swf?page=question[/b]" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object>

- dans mon flash, sur une image clé vide :
Code:
trace(_root.page);

if(_root.page="page1")
{
setProperty("_root.titre1", _visible, "1");
setProperty("_root.titre2", _visible, "0");
setProperty("_root.titre3", _visible, "0");
setProperty("_root.titre4", _visible, "0");
}
else if(_root.page="page2")
{ 
setProperty("_root.titre1", _visible, "0");
setProperty("_root.titre2", _visible, "1");
setProperty("_root.titre3", _visible, "0");
setProperty("_root.titre4", _visible, "0");
} 

...
etc,...

else if(_root.page="contact")

ou ai je fait un oubli ou une erreur?
 
WRInaute impliqué
tu as bien déclaré la variable page dans le flash ?

au passage le trace ne sert a rien vu que la variable est initialisé par l'html et alors tu n'as pas de Sortie
 
WRInaute discret
non,
car je ne comprend pas comment récupérer le contenu de ma variable page dans la code html de la page.

...
en fait, le site en question est celui-ci
Je souhaiterais modifier dans le fichier flash, le titre 'Un a.vocat à votre écoute" selon la page concerné. Afin que le titre affich" soit celui de la page surlaquelle on est.
 
WRInaute occasionnel
je connais 3 façons de passer l'url de la page en cours dans un swf:

1. Ma préférée -> via un fichier xml

assez simple à faire, il suffit de générer un fichier xml (via php) dans le quel tu saisis un truc du genre:

Code:
<?xml version="1.0"?>
<page><![CDATA[http://www.example.com]]></page>

Tu récupères ensuite la balise xml correspondante dans ton swf.

2. Ma moins préférée
-> via la balise "flashvars"

Encore plus simple, mais tu dois la saisir dans la page html à l'appel du menu flash. Tu dois donc recharger à chaque fois la page pour modifier la valeur.

Tu appelles ton fichier swf comme suit:

Code:
<object ...>
 <param name="flashVars"  value="pageEnCours=http://www.example.com/&" />
 <param ...>
 <embed src="url_flash.swf" flashVars="pageEnCours=http://www.example.com/&" 
 etc... >
 </embed>
</object>

3. La plus tendance! Via un javascript que tu mets dans une i-frame dans ta page de base.
Le principe est que l'anim flash écoute le javascript. Le javascript est déclenché par le swf. Il s'execute dans l'iframe, puis renvoie la valeur choisie au swf.

Ceci est également utilisé pour gérer l'historique (retour en arrière) dans les sites full flash. Par-contre, si c'est cette méthode que tu veux utiliser, il faudra me redemander. Je n'ai pas le code sous la main. Je viens de la mettre au point. C'est pas encore tout à fait au point.

Voilà

Pour conclure, en fonction de ton site, si tu utilises déjà des fichiers xml, préfère la 1ère solution. Sinon la 2ème fonctionnera à merveille.


jOoL
 
WRInaute impliqué
v1 : Je vois pas comment c'est applicable dans son cas, le flash ne sais toujours pas dans quel page html il est.

v2 : Je connaissais pas, ca a l'air pas mal. merci de l'info

v3 : les iframes, c'est pas "tendance" pour moi et le javascript ca se desactive..
 
WRInaute occasionnel
Photoshop user a dit:
v1 : Je vois pas comment c'est applicable dans son cas, le flash ne sais toujours pas dans quel page html il est.
si, tu définis la variable en AS en fonction de la balise xml que tu reçois, qui est générée en php en fonction de la page ou on est.

Photoshop user a dit:
v2 : Je connaissais pas, ca a l'air pas mal. merci de l'info
de rien

Photoshop user a dit:
v3 : les iframes, c'est pas "tendance" pour moi et le javascript ca se desactive..
NC. ce qui est tendance, c'est de passer des infos depuis le swf, à l'i-frame qui contient le js, pour les renvoyer au swf. Tout ceci, sans actualiser la page.

JS se désactive, tout comme le plugin flash, tout comme les css. Donc, il ne faut pas s'arrêter là. Enfin à mon sens... après...

;-)

jOoL
 
WRInaute impliqué
jOoL a dit:
si, tu définis la variable en AS en fonction de la balise xml que tu reçois, qui est générée en php en fonction de la page ou on est.

et comment le xml sait quel page html l'appel ? le referer ? (avec le flash, y en a pas je pense). si tu me réponds, c'est le flash qui lui envoi, je rigole :lol:

jOoL a dit:
JS se désactive, tout comme le plugin flash, tout comme les css. Donc, il ne faut pas s'arrêter là. Enfin à mon sens... après...

les gens qui désactivent les css, se compte sur les doigts d'une main. Principalement 1 ou 2 geeks sous lynx et quelques utilisateurs de navigateurs pour déficient visuel ou auditif.

les gens qui ne sont pas capable de lire du flash, d'apres macromédia, c'est pas beaucoup :
http://www.macromedia.com/software/play ... ation.html
on peut les accuser des partials un brin mais bon... - de 2% pour l'europe
en tout cas il y a tous ceux qui désactive les css déjà :idea:

la désactivation du javascript, certains disent 10%, ca me parait beaucoup mais les proportions sont clairement suffisantes pour preferer les autres "v" ;) surtout quand c'est une fonction indispensable à l'utilisation du site web
 
WRInaute occasionnel
bon, On va pas s'énerver :D ;-)

Par-contre j'ai p'tetre pas pris le blême dans le bon sens.

A priori, la v2 est facile, et efficace.

Par-contre, je me rends compte qu'il est possible de faire en sorte que flash détermine quelle page va être chargée. Ben, oui... chaque item du menu flash envoie vers un lien: page1, page2 etc...

Donc au moment du clic, on sait quelle sera la prochaine page appelée, donc on peut appeler le xml correspondant...

T'es pas d'accord?

Photoshop user a dit:
si tu me réponds, c'est le flash qui lui envoi, je rigole :lol:[/quot]

hihi

les gens qui ne sont pas capable de lire du flash, d'apres macromédia, c'est pas beaucoup :
... surtout quand c'est une fonction indispensable à l'utilisation du site web

Oui, c'est juste, mais attention aux versions. La v8 n'est pas encore très répandue.

Et c'est évident que pour les fonctions indispensable du site, il faut prévoir l'alternative !

:wink: en gros on est d'accord quoi. La v2 est la plus simple et la plus fiable dans ce cas de figure.
 
Nouveau WRInaute
Bonjour,
Je suis bien content d'avoir trouvé ce post.
J'ai moi aussi le même besoin de récupérer une URL dans flash.
Cela fonctionne bien pour moi ... mais pas pour IE, ou bien pas pour FIREFOX.
En gros quand cela fonctionne chez IE, ça ne fonctionne pas pour firefox et inversement... C lourd :)

j'ai ceci d'OK pour firefox :
Code:
            <object type="application/x-shockwave-flash" data="../swf/entete.swf?currentpage=<?php echo $_SERVER['PHP_SELF']; ?>" width="881" height="128">
              <param name="movie" value="../swf/entete.swf" />
              <param name="menu" value="false" />
              <param name="quality" value="high" />
            </object>

Et, ceci pour IE :
Code:
          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="881" height="128">
              <param name="movie" value="../swf/entete.swf?currentpage=<?php echo $_SERVER['PHP_SELF']; ?>">
              <param name="quality" value="high">
              <embed src="../swf/entete.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="881" height="128"></embed>
          </object>

Je serais bien content d'avoir qques avis la dessus, Merci.
 
Nouveau WRInaute
:D je déterre ce vieux topic : la seconde méthode marche effectivement a merveille pour récupérer n'importe quelle variable sur la page en cours et la passer en a l'anim Flash de la page : merci JOol !!

Pour que ca fonctionne sou IE et Firefox ET que ce soit valide W3C, utilise ce code (à personnaliser, indeed !) :


Code:
<!--[if IE]>
							<object type="application/x-shockwave-flash" data="../swf/btn_fiche.swf" width="374" height="32" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
							<param name="flashVars" value="varEnCours=<?php echo $_GET['var']; ?>&" />
							<img src="../img/noflash.png" alt="si vous souhaitez voir l'animation, veuillez télécharger le plug-in flash" width="374" height="32" />
							</object>
<![endif]-->

<!--[if !IE]> <-->
							<object type="application/x-shockwave-flash" data="../swf/btn_fiche.swf" width="374" height="32">
							<param name="flashVars" value="varEnCours=<?php echo $_GET['var']; ?>&" />
							<img src="../img/noflash.png" alt="si vous souhaitez voir l'animation, veuillez télécharger le plug-in flash" width="374" height="32" />
							</object>
<!--> <![endif]-->



jOoL a dit:
je connais 3 façons de passer l'url de la page en cours dans un swf:

2. Ma moins préférée[/b] -> via la balise "flashvars"

Encore plus simple, mais tu dois la saisir dans la page html à l'appel du menu flash. Tu dois donc recharger à chaque fois la page pour modifier la valeur.

Tu appelles ton fichier swf comme suit:

Code:
<object ...>
 <param name="flashVars"  value="pageEnCours=http://www.example.com/&" />
 <param ...>
 <embed src="url_flash.swf" flashVars="pageEnCours=http://www.example.com/&" 
 etc... >
 </embed>
</object>

Pour conclure, en fonction de ton site, si tu utilises déjà des fichiers xml, préfère la 1ère solution. Sinon la 2ème fonctionnera à merveille.


jOoL
 
Discussions similaires
Haut