Introduction

Le paramètre FlashVars de la balise HTML <OBJECT> envoie des variables au premier niveau d’un fichier SWF lors de son chargement dans un navigateur Web. La balise <OBJECT> permet d’ajouter des fichiers SWF aux pages HTML. Il est également possible d’utiliser la balise <EMBED>, mais celle-ci est plus ancienne et elle est désormais obsolète.

Pour plus d’informations sur les principes de base de l’utilisation de la balise <OBJECT>, voir Syntaxe de la balise OBJECT.

Remarque : la fonction FlashVars requiert Flash Player 6 ou version ultérieure.

Utilisation de FlashVars pour transmettre des valeurs à un fichier SWF

Vous pouvez utiliser un paramètre facultatif nommé FlashVars afin de transmettre des variables au niveau racine du fichier SWF. Placez ce paramètre au sein de la balise <OBJECT> ou de la balise plus ancienne <EMBED>. L’ensemble de ces variables sont ensuite transmises au fichier SWF avant la lecture de la première image du fichier.

Il vous est possible de transmettre autant de variables que vous le souhaitez et sous n’importe quel nom. Tous les navigateurs prennent en charge les chaînes FlashVars d’une longueur maximale de 64 Ko (65 535 octets).

Le format de la propriété FlashVars est une chaîne constituée par un ensemble de paires nom=valeur séparées par le caractère &.

Vous pouvez inclure des caractères spéciaux ou non imprimables à l’aide du caractère % suivi de la valeur hexadécimale à deux chiffres correspondante. Les espaces simples peuvent être représentés à l’aide du signe +. Pour plus d’informations sur les caractères spéciaux du codage des URL, voir URL Encoding (Wikipédia).

L’exemple de code HTML suivant transmet deux variables. La première variable est appelée myVariable et elle possède la valeur « Hello World ». La seconde s’appelle mySecondVariable et elle possède la valeur « Goodbye ».

Exemple de balise Object

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="myFlashMovie" align="middle">
    <param name="movie" value="myFlashMovie.swf" />
    <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="myFlashMovie.swf" width="550" height="400">
        <param name="movie" value="myFlashMovie.swf" />
        <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" />
    <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflash">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

 

Exemple de balise Embed

La balise <EMBED> permet également d’ajouter un fichier SWF à une page Web, mais il s’agit d’une balise plus ancienne qui est désormais obsolète.

<embed src="myFlashMovie.swf" 
    quality="high" 
    bgcolor="#ffffff" 
    width="550" 
    height="400" 
    name="myFlashMovie"     FlashVars="myVariable=Hello%20World&mySecondVariable=Goodbye"
    align="middle" 
    allowScriptAccess="sameDomain" 
    allowFullScreen="false" 
    type="application/x-shockwave-flash" 
    pluginspage="http://www.adobe.com/go/getflash" 
/>

Le navigateur code la chaîne FlashVars de la même façon qu’il code le reste de la page HTML. Internet Explorer sous Windows fournit un codage compatible UTF-16. Tandis que les autres navigateurs fournissent un codage compatible UTF-8.

Accès aux variables de code ActionScript 3.0 dans un fichier SWF

Une fois que vous avez transmis des variables à votre fichier SWF à partir du code HTML, le fichier SWF requiert l’utilisation de ces variables.

Utilisez l’objet ActionScript 3.0 LoaderInfo pour accéder aux variables FlashVars.

Exemple simple

L’exemple de code ci-dessous interroge l’objet LoaderInfo afin d’accéder à la variable appelée myVariable transmise au fichier SWF dans le paramètre FlashVars. Il définit ensuite le texte d’un champ de texte sur la scène sur la valeur de chaîne de la variable.

// by querying the LoaderInfo object, set the value of paramObj to the 
// to the value of the variable named myVariable passed from FlashVArs in the HTML
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters.myVariable;

// set the text of the text instance named text1. Use the toString() method
// to convert the value from an object to a string so it can be used in the text field
text1.text = paramObj.toString()

Vous pouvez télécharger des fichiers d’exemple FLA, SWF et HTML illustrant l’utilisation du code ci-dessus.

Exemple avancé

L’exemple de code ci-dessous effectue les actions suivantes :

  • crée une instance TextField sur la scène (appelée tf) ;
  • utilise l’objet LoaderInfo de manière à extraire les variables du paramètre FlashVars ;
  • utilise une boucle for..in afin d’itérer chacune des variables transmises ;
  • affiche les noms et les valeurs des variables dans le champ de texte.
// AS3
var tf:TextField = new TextField();       // create a TextField names tf
tf.autoSize = TextFieldAutoSize.LEFT;
tf.border = true;
addChild(tf);                             // add the TextField to the DisplayList so that it appears on the Stage

tf.appendText("params:" + "\n");
try 
{
    var keyStr:String;
    var valueStr:String;
    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;   //set the paramObj variable to the parameters property of the LoaderInfo object
    for (keyStr in paramObj) 
    {
        valueStr = String(paramObj[keyStr]);
        tf.appendText("\t" + keyStr + ":\t" + valueStr + "\n");  // add each variable name and value to the TextField named tf
    }
} 

catch (error:Error) 
{
    tf.appendText(error.toString());
}

Accès aux variables de code ActionScript 2.0 dans un fichier SWF

Dans ActionScript 2.0, vous pouvez accéder directement aux variables FlashVars, de la même façon que si elles étaient déclarées dans le fichier SWF.

Ce exemple définit la propriété de texte d’une instance de texte dynamique appelée text1 sur la valeur de la variable appelée myVariable. myVariable est déclarée dans le paramètre FlashVars.

// AS2
text1.text = myVariable;

Vous pouvez télécharger des fichiers d’exemple FLA, SWF et HTML illustrant l’utilisation du code AS2 ci-dessus.

Autres techniques

Il est également possible de transmettre des variables à des fichiers SWF en les ajoutant aux URL des fichiers SWF spécifiées dans les balises OBJECT et EMBED. Dans cette technique, les informations supplémentaires ajoutées à l’URL sont appelées chaînes de requête. Cette méthode présente des limitations dans le cas où vous avez immédiatement besoin des variables lors du chargement du fichier SWF. Avec cette méthode, il est nécessaire de télécharger et de lire le fichier SWF avant de pouvoir demander de grandes quantités de données au serveur.

Mots-clés : transmettre ; paramètres ; chaîne de requête ; object ; embed ; tn_16417

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne