FrancaisAdobe Flex Tutorial
jeux flash gratuit
Les critiques des meilleurs sites de poker, comme Titan Poker, sont sur Launchpoker: lisez les attentivement avant de décider où aller jouer au Texas Holdem sur internet.

[Web] - Utiliser FlashVars pour récupérer une variable contenue dans l'url de la page


Tutorial - Comment récupérer des variables passées en GET, dans un swf Flash avec FlashVars
tutorial flashvars variable swf get
Pour un de mes projets, je devais charger des données personnalisées depuis une base MySql dans un swf Flash.
L'identifiant permettant de retrouver ces données dans la base était indiqué dans l'url de la page sous la forme index.php?id=xxx.
Ce n'était pas une valeur POST mais une valeur GET qu'il fallait récupérer.

Après avoir testé plusieurs solutions (LoadVariables(), load() ...), la solution la plus simple fut de transmettre l'identifiant grâce aux FlashVars. Avec un peu de PHP et d'ActionScript (as), les données sont chargées automatiquement dans mon SWF.
Ce tutorial présente le code source à écrire pour pouvoir utiliser ces FlashVars sous tous les navigateurs web.









Passer des variables en FlashVars

Pour pouvoir fonctionner dans tous les navigateurs, les FlashVars doivent être présente dans les balises OBJECT et EMBED.
Toutes les variables sont crées avant que la première image du swf soit jouée.
Un espace peut être représenté à l'aide d'un '+'.

Exemple pour le tag OBJECT :
<PARAM NAME=FlashVars VALUE="id=identifiant&autre-flashvars=autre+variable">

Exemple pour le tag EMBED :
<EMBED src="FlashVars.swf" FlashVars="id=identifiant&autre-flashvars=autre+variable" ... (autres paramètres)></EMBED>


Le code PHP pour récupérer la variable GET de l'url

Le code PHP pour récupérer la variable $_GET et l'intégrer aux FlashVarsest très basique.
On va prendre ici une url de la forme page.php?id=xxx.
if(isset($_GET["id"]) && $_GET["id"]!=""){
	$getId = $_GET["id"];
	$data_object="<PARAM NAME=FlashVars VALUE=\"id=$getId\">";
	$data_embed="FlashVars=\"id=$getId\"";
}

Il vous suffit ensuite d'intégrer ces valeurs dans les tags OBJECT et EMBED correspondant.
Le code suivant donc bien sur être adapté à votre swf et à vos variables.
On a donc du code sous la forme :
<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0' ID=postcard WIDTH=400 HEIGHT=400>";		
<?php
	$data.="<PARAM NAME=movie VALUE='FlashVars.swf'>";
	$data.="<PARAM NAME=quality VALUE=high>";
if(isset($_GET["id"]) && $_GET["id"]!=""){
	$getId = $_GET["id"];
	$data_object="<PARAM NAME=FlashVars VALUE=\"id=$getId\">";
	$data_embed="FlashVars=\"id=$getId\"";
}
$data.=$data_object;
$data.="</OBJECT>";				
$data_emb.="<embed src='FlashVars.swf' quality=high WIDTH=400 HEIGHT=400 TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' ";
$data_emb.=$data_embed;
$data_emb.=">";
print $data;
print $data_emb;
?>








Récupérer les variables passées en FlashVars sous Flash

Pour charger les variables passées en FlashVars sous Flash, c'est très simple puisqu'elle sont placées immédiatement au niveau _root avec le nom de variable que vous avez précisé dans votre code.
Il vous suffit donc d'indiquer ce nom identifiant dans le champ Var. des propriétés de votre champ texte.
flashvars champ texte


Si vous souhaitez passez des variables en POST avec une page PHP séparée, consultez ce tutorial :

Tutorial - Faire communiquer Flash avec un script PHP / MySQL en utilisant LoadVars

Si vous avez des problèmes avec l'utilisation des FlashVars votre site web, laissez un commentaire sur cet article.




Tutorial : Comment créer un jeu flash, ActionScript et animation (1) >

< Kongregate, le site communautaire de jeux flash gratuits




Commentaires

  • Le 21.07.2008, par Valbuena72

    salut,
    je suis tout nouveau et franchement c'est le seul site qui propose un tutoriel pour crée un jeux bravo.
    C'est possible que tu mettre une page de résulat après les tutoriels c'est juste comme ça.C'est pas tout ça mais tu m'a donne du boulot ^^
  • Le 18.11.2008, par matthews

    Hello !
    hyper bien vu ce tuto ! ça fait des jours que je cherchais ça sans trouver...
    j'ai cependant encore un petit bug incompréhenssible. Grace à l'incertion d'un champ texte je constate que ma variable est bien récupérée hors cela ne semble pas marcher ! aurais-je homis quelque chose d'indispensable dans mon code (personne ne trouve) ou est-ce aufait que mon menu se reload à chaque chargement de page = pbl de delai pour executer la variable??!!! tout se trouve sur une seul frame (clips imbriqués)
    Si quelqu'un avait une réponse ingénue à mon petit soucis... je me prosterne car je suis bloqué
    encore merci à toute l'équipe.
    M
  • Le 18.11.2008, par matthews

    Ooups...
    le code AS :

    stop();
    loadvar = new LoadVars();
    loadvar.load("index.php");

    loadvar.onLoad = function()
    {
    this.createTextField("my_txt", 10, 10, 10, 100, 21);
    my_txt.text = _root.myvar;
    }

    if (_root.myvar == "accueil") {
    _root.menu_mc.accueil.gotoAndPlay("hit");
    _root.menu_mc.actualites.gotoAndPlay(15);
    _root.menu_mc.boutique.gotoAndPlay(15);
    _root.menu_mc.magasins.gotoAndPlay(15);
    _root.menu_mc.btn_sm3d.gotoAndPlay(15);
    _root.menu_mc.btn_sm3e.gotoAndPlay(15);
    _root.menu_mc.btn_sm3f.gotoAndPlay(15);
    _root.menu_mc.btn_sm3g.gotoAndPlay(15);


    } else if (_root.myvar == "actualite") {
    _root.menu_mc.actualites.gotoAndPlay("hit");
    _root.menu_mc.accueil.gotoAndPlay(15);
    _root.menu_mc.boutique.gotoAndPlay(15);
    _root.menu_mc.magasins.gotoAndPlay(15);
    _root.menu_mc.btn_sm3d.gotoAndPlay(15);
    _root.menu_mc.btn_sm3e.gotoAndPlay(15);
    _root.menu_mc.btn_sm3f.gotoAndPlay(15);
    _root.menu_mc.btn_sm3g.gotoAndPlay(15);


    } else {
    _root.menu_mc.accueil.gotoAndPlay("hit");
    }


    trace(myvar);
  • Le 31.03.2009, par kenjii

    Salut moi aussi j'ai un soucis :)

    Php et flash semble ok mais voila, mes variables sont bien chargé , elle s'affiche bien dans flash via le texte dynamique en variable .

    Le hic est lorsque j'essaie de récupérer cet variable php dans une variable flash que j'affiche ensuite, j'obtiens dans ce news texte:
    p align=leftp "Ma variable" bodyhtml Pour la 1 variable et :
    p align=leftp "Ma variable" Pour la 2eme

    Pouvez vous m'aidez ?
Vous devez être inscrit pour pouvoir ajouter un commentaire
bouton inscription jeux
Aide | Contact | Règlement | Plan du Site | tutorial illustrator flash css php