• Quelques concepts

    Les sites statiques

    Flash est principalement utilisé dans le domaine des applications et des sites Internet. Dans un site statique, qui peut intégrer une animation Flash, les pages sont appelée par le client et la page apparaît telle qu’elle est stockée sur le serveur.
    Ce genre de site ne comporte généralement que des pages au format HTML.

    Les sites dynamiques

    Ils se distinguent des sites statiques en ce que les pages appelées par le client sont construites par le serveur au moment où elles sont consultées par l’internaute, le client. Le serveur Web est généralement du type PHP/MySQL ou ASP.Net.

    Les sites dynamiques utilisent dont une base de données (mySQL ou autre) ou tout autre  données externes comme par exemple un fichier XML. Les animations Flash doivent être executées sur les postes des clients. Nous avons donc une architecture comme suit :

    Les animations Flash ne peuvent pas accéder directement à une base de données ou tout autre fichier  stocké sur le serveur web. Pour réaliser une telle opération, l’animation doit passer par un script situé côté serveur, nous utiliserons PHP, pour réaliser les opérations telles que :
    * Interrogation d’une base de données (SELECT)
    * Insertion (INSERT), modification (UPDATE) ou suppression (DELETE) de données dans une base de données
    * Lecture d’un fichier XML

    Pour réaliser le lien entre une animation Flash et un script serveur nous disposons des classes suivantes :
    * URLLoader
    * URLRequest
    * URLVariables

    Une application Web complète contiendra donc les différents composants sur le serveur : base de données, les pages PHP, les animations Flash compilées au format .SWF, les images, etc.

    Le chapitre 14 du livre « Pratique d’ActionScript » de Timbault Imbert traite du chargement et de l’envoi des données entre les animations Flash et les scripts côté serveur, tels que PHP.

     
  • Créer un formulaire d’inscription en AS3

    Cet exemple consiste à réaliser une animation Flash permettant de remplir un formulaire d’inscription, une confirmation sera envoyée par courrier électronique. Par défaut, nous l’avons vu plus haut, le lecteur Flash n’a pas la possibilité d’envoyer des eMails directement ni d’effectuer des opérations sur les bases de données, il faudra passer par un script serveur et utiliser la classe URLRequest() et la fonction NavigateToURL(). Notre animation utilisera un script PHP pour récupérer les informations saisies dans le formulaire, ajouter l’inscription dans une base de données.

    Structure de l’application

    • inscriptionMembre.as : Fichier script contenant le package et la classe inscriptioMembre
    • inscriptionMembre.fla : Animation Flash
    • Inscription.php : Script PHP appelé par l’animation en charge d’ajouter le membre dans la table et d’envoyer un message életronique de confirmation d’inscription.

    Nous avons besoin d’une table dans une base de données MySQL avec la structure suivante :

    Création de l’interface Flash

    Commençons par créer un fichier script .as contenant un package et une classe que nous appelerons inscriptionMembre. Nous créons ensuite une animation avec l’interface permettant de saisir le login, le mot de passe et une adresse eMail valide.

    Nous utiliserons des composants de type User Interface disponibles depuis la fenêtre Composant de Flash. Nous aurons besoins des types Button et TextInput.

    Pour simplifier nous allons créer l’interface en mode design dans Flash bien qu’il soit possible de le créer entièrement en mode code en utilisant les classes TextField et Button.

    A l’aide des panneaux Propriétés et Inspecteur de composants, dessinez l’interface suivante :

    Les champs de saisies seront créés dynamiquement depuis le code.

    Notre animation est terminée, nous allons gérer la classe inscriptionMembre dans le fichier inscriptionMembre.as.

    Pour l’instant votre classe devrait ressembler à ceci :

    
    package {
    
    import flash.display.*;
    import flash.text.*;
    import flash.events.*;
    import flash.net.*;
    
    public class inscriptionMembre extends MovieClip {
    
    // Constructeur
    public function inscriptionMembre() {
    
    }
    
    }
    
    }
    

    Déclarons trois variables pour les champs de saisies du pseudo, du mot de passe et de l’adresse de messagerie.

    Nous avons besoin également d’un bouton pour envoyer les données.

    
    public var txtLogin:TextInput;
    public var txtPwd:TextInput;
    public var txteMail:TextInput;
    public var btnEnvoi:Button;
    

    Dans le constructeur de la classe, nous initialisons ces variables. Il faut indiquer les paramètres concernant l’aspect du composant (largeur, hauteur, position, etc.) puis l’intégrer à la scène, à l’aide de la fonction addChild(). Voici le code pour le premier champ de saisie, essayez d’écrire le code pour les champs  »txtPwd » et  »txteMail ».

    
    // Champ de saisie du login
    txtLogin = new TextInput();
    txtLogin.width = 200;
    txtLogin.height = 22;
    txtLogin.x = 220;
    txtLogin.y = 120;
    
    addChild(txtLogin);
    

    Nous configurons le bouton et lui ajoutons un écouteur en pointant sur la méthode qui sera exécutée lorsque le bouton sera cliqué.

    Voici le code du constructeur :

    
    // Constructeur
    public function inscriptionMembre() {
    
    // Champ de saisie du login
    txtLogin = new TextInput();
    txtLogin.width = 200;
    txtLogin.height = 22;
    txtLogin.x = 220;
    txtLogin.y = 120;
    addChild(txtLogin);
    
    // Champ de saisie du mot de passe
    txtPwd = new TextInput();
    txtPwd.width = 200;
    txtPwd.height = 22;
    txtPwd.x = 220;
    txtPwd.y = 160;
    addChild(txtPwd);
    
    // Champ de saisie pour l'adresse eMail
    txteMail = new TextInput();
    txteMail.width = 200;
    txteMail.height = 22;
    txteMail.x = 220;
    txteMail.y = 200;
    addChild(txteMail);
    
    btnEnvoi = new Button();
    btnEnvoi.width = 100;
    btnEnvoi.height = 22;
    btnEnvoi.x = 225;
    btnEnvoi.y = 253;
    btnEnvoi.label = "Envoyer";
    addChild(btnEnvoi);
    
    // Ajout d'un écouteur sur le bouton
    btnEnvoi.addEventListener(MouseEvent.CLICK, envoiInformations);
    
    }
    

    Notre animation fonctionne maintenant de façon indépendante, nous allons la lier avec notre script PHP dans la méthode envoiInformations. Cette fonction aura la charge de récupérer le contenu des champs de saisies et d’envoyer le tout au script situé sur le serveur inscription.php.

    La classe URLRequest() nous servira à pointer sur le script PHP du serveur. La fonction navigateToURL() nous permettra d’ouvrir le script pointé en passant les paramètres récupérés dans les champs de saisies du formulaire.

    Nous utiliserons la méthode POST pour envoyer les données de l’animation au script PHP.

    Voici le code complet de la méthode envoiInformations.

    
    public function envoiInformations(e:Event):void
    {
    // Objet permettant de récupérer les champs saisis
    var variables:URLVariables = new URLVariables();
    
    // Pointe sur le script PHP
    var script:String = "http://localhost:8888/coursflash/inscription.php";
    var req:URLRequest = new URLRequest(script);
    
    // Affectation des variables à envoyer au serveur
    variables.login = txtLogin.text;
    variables.pwd = txtPwd.text;
    variables.mail = txteMail.text;
    
    req.method = URLRequestMethod.POST;        // Méthode utilisée pour l'envoi
    req.data = variables;                    // Données envoyées
    
    // Ouverture     d'une fenêtre dans le navigateur et envoi des données
    navigateToURL(req);
    }
    

    Voici le code complet du script PHP. Adaptez les valeurs des constantes de connexion en début de code par rapport à votre configuration personnelle.’

    
    <?php
    
    /***
    *
    *    inscription.php
    *    Projet :    Cours Flash dynamique
    *    Auteur :    Maurizio Stasi
    *    Objet :        Reçoit des données en paramètre pour l'inscription
    *                d'un nouvel utilisateur dans la table USERS.
    *                Après ajout de l'enregistrement, nous envoyons un
    *                message de confirmation par courrier électronique.
    *
    *    Versions :    21.08.2008 - première version [MSI]
    *
    */
    
    define('SERVER', 'localhost:8888');
    define('DATABASE', 'coursphp');
    define('USER', 'root');
    define('PWD', 'root');
    
    // Récupération des données envoyées par l'animation Flash
    echo $_POST['login'] . '<br/>';
    echo $_POST['pwd'] . '<br/>';
    echo $_POST['mail'] . '<br/>';
    
    $login = $_POST['login'];
    $pwd = $_POST['pwd'];
    $mail = $_POST['mail'];
    
    $conn = mysql_connect(SERVER, USER, PWD) or die('La connexion au serveur a échoué!');
    $db = mysql_select_db(DATABASE) or die('La sélection de la BD a échoué!');
    
    // Insertion de l'utilisateur avec cryptage du mot de passe...
    $query = 'INSERT INTO users(login, pwd, email) VALUES (\'' .
    $login . '\', \'' . md5($pwd) . '\', \'' . $mail . '\')';
    
    echo $query;
    
    mysql_query($query);
    if (mysql_affected_rows() == 0) {
    
    $Result = 'L\'insertion a échoué';
    
    echo 'Echec!';
    } else {
    
    // Envoi d'un message
    $head = 'From: webmaster@coursflash.com';
    
    mail($mail, 'Confirmation de votre inscription', 'Félicitations, vous êtes maintenant inscript!', $head);
    $Result = 'Félicitations, vous êtes maintenant inscript!';
    }
    echo $Result;
    
    ?>
    

    Publiez votre animation Flash et placez le fichier .swf sur votre serveur local ou distant au même endroit que le script inscription.php.

    Testez ensuite l’animation depuis votre navigateur.

    Une nouvelle occurrence a été ajoutée à notre table USERS de notre base de données.

     
  • Afficher des données d’une base de données MySQL avec ActionScript 3

    Dans cette animation nous allons afficher les données de la table MySQL utilisée dans l’étude de cas précédente. Nous savons maintenant que nos animations Flash doivent passer par un script serveur pour effectuer les opérations sur les bases de données, selon le shéma étudié dans les concepts :

    Concept de l’animation

    L’utilisateur pourra saisir le nom à rechercher puis lorsqu’il clique sur le bouton Afficher, une méthode enverra une requête à un script PHP qui aura la charge de faire une opération de type SELECT et de nous renvoyer les données sélectionnées pour que nous puissions les afficher dans un composant DataGrid.

    Commencez par créer le squelette de votre classe affichageMembre dans un nouveau fichier ActionScript et une nouvelle animation du même nom dans laquelle il faut assigner la classe du document.

    
    package {
    
    import flash.display.*;
    import flash.text.*;
    
    public class affichageMembre extends MovieClip {
    
    // constructeur
    public function affichageMembre()
    {
    
    }
    
    }
    
    }
    

    Code PHP du script serveur

    Côté serveur notre script PHP doit recevoir un paramètre correspondant à la recherche spécifiée par l’animation, rechercher les données puis les renvoyer.
    Le renvoi des informations se fait avec la commande echo.

    Puisqu’il est possible que plusieurs lignes soient concernées par la requête, nous allons utiliser un compteur qui nous permettra également de séparer chaque ligne en nommant les champs { (login1, pwd1, email1), (login2, pwd2, email2), (loginn-1, pwdn-1, emailn-1),  (loginn, pwdn, emailn)},.

    
    <?php
    /***
    *
    *    Projet :     Cours ActionScript
    *    Auteur :     MSI
    *    Date :        août 2008
    *
    *    Objet :        Script serveur à utiliser avec l'animation affichageMembre.fla
    *
    *                Renvoie les membres de la table [USERS] selon le critère
    *                de recherche 'contenu' reçu en paramètre.
    *
    *
    *    Modifications
    *        - 22.08.2008 : première version [MSI]
    */
    
    // Constantes de connexion à modifier en fonction de la configuration
    define("SERVER", "localhost:8888");
    define("BD", "coursphp");
    define("USER", "root");
    define("PWD", "root");
    
    // Connection au serveur BD
    $link = mysql_connect(SERVER, USER, PWD) or die("Connexion au serveur " . SERVER . " impossible!");
    
    // Sélection de la base de données de travail
    if (mysql_select_db(BD) == false)
    die ("Impossible de se connecter à la base de données !");
    
    // Critère de recherche envoyé par l'animation Flash
    $contenu = $_POST["contenu"];
    
    // Construction de la requête SQL
    if(empty($contenu)) {
    $sql = "SELECT * FROM users";
    } else {
    $sql = "SELECT * FROM users WHERE login LIKE '" . "%$contenu%" . "'";
    }
    
    // Requête de sélection
    $result = mysql_query($sql) or die("La requête de sélection" . $sql . " a échoué!");
    
    // Puisque nous avons plusieurs enregistremens à renvoyer nous utilisons un compteur
    $compteur=1;
    while ($row=mysql_fetch_array($result)) {
    
    // Il faut un &amp;amp;amp;amp; avant la variable nom si ce n'est pas le premier...
    if($compteur>1) {
    $strResult="&amp;amp;amp;amp;";
    } else {
    $strResult="";
    }
    // les variables retournées sont uniques pour remplir ma DataGrid
    $strResult .= "login$compteur=" . $row["login"] ."&amp;amp;amp;amp;pwd$compteur=" . $row["pwd"] .
    "&amp;amp;amp;amp;email$compteur=" . $row["email"];
    echo ($strResult);
    
    // J'incrémente le compteur
    $compteur++;
    }
    
    echo  "&amp;amp;amp;amp;nbusers=" . mysql_num_rows($result);
    ?>
    

    Classe afficherMembre

    A propos des importations avec import

    Lorsque vous obtenez un message d’erreur de la part du compilateur Flash ressemblant à ceci :


    cela indique qu’il vous manque un import en début de package.

    Dans notre cas il faudra ajouter respectivement fl.controls.TextInput, fl.controls.Button et fl.controls.DataGrid.

    Il est plus simple d’importer tous les composants d’une seule ligne : fl.controls.*

    Si le problème persiste, il existe un bug dans AS3, ajoutez manuellement un champ du même type dans l’animation, publiez l’animation et enfin supprimez le composant. Il sera ainsi ajouté à la bibliothèque et le problème sera résolu.

    !!!Constructeur

    Nous initialisons affichons l’interface utilisateur dans le constructeur de notre classe.

    
    // constructeur
    public function affichageMembre()
    {
    // Champ de saisie pour le critère de recherche
    txtFiltre = new TextInput();
    txtFiltre.width = 200;
    txtFiltre.height = 20;
    txtFiltre.x = 10;
    txtFiltre.y = 370;
    addChild(txtFiltre);
    
    // Bouton d'envoi
    btnEnvoi = new Button();
    btnEnvoi.width = 50;
    btnEnvoi.height = 20;
    btnEnvoi.x = 250;
    btnEnvoi.y = 370;
    btnEnvoi.label = "Afficher";
    addChild(btnEnvoi);
    
    // Grille d'affichage
    grdAffichage = new DataGrid();
    grdAffichage.width = 540;
    grdAffichage.height = 350;
    grdAffichage.x = 5;
    grdAffichage.y = 5;
    addChild(grdAffichage);
    
    }
    

    Il faut ensuite ajouter un écouteur pour appeler la méthode en charge d’appeler le script PHP. Cet écouteur sera ajouté également dans le constructeur.

    
    // Ecouteur sur le bouton
    btnEnvoi.addEventListener(MouseEvent.CLICK, appelerScriptPHP);
    

    Appel du script PHP

    Nous allons utiliser les classes URLRequest et URLLoader pour appeler le script et lui passer le contenu du champ de saisie.  La classe URLLoader nous permet d’appeler un script sans que celui-ci soit ouvert dans le navigateur, rendant l’opération de récupération des données transparente pour l’utilisateur.
    Ensuite nous devons traiter la récupération des informations renvoyées, pour cela nous utiliserons un nouvel écouteur avec le paramètre COMPLETE.

    
    public function appelerScriptPHP(e:MouseEvent):void
    {
    // Objet permettant de récupérer les champs saisis
    var variables:URLVariables = new URLVariables();
    
    // Pointe sur le script PHP
    var script:String = "http://localhost:8888/coursflash/affichageMembre.php";
    var req:URLRequest = new URLRequest(script);
    
    // Affectation des variables à envoyer au serveur
    variables.contenu = txtFiltre.text;
    
    req.method = URLRequestMethod.POST;        // Méthode utilisée pour l'envoi
    req.data = variables;                    // Données envoyées
    
    var loader:URLLoader = new URLLoader();
    
    // Ecouteur pour traiter la récupération des informations
    loader.addEventListener(Event.COMPLETE, recupererDonnees);
    
    // Appel du script sans ouverture dans le navigateur
    loader.load(req);
    }
    

    Lorsque le script est terminé, la méthode recupererDonnees est appelée automatiquement par l’écouteur. Cette fonction aura la charge de remplir le composant DataGrid avec les données de la table.

    Récupération des données depuis PHP

    Il s’agit de récupérer les données en utilisant la classe URLVariables. Les paramètres login, pwd, email correspondent aux champs retournés par PHP avec la commande echo.

    
    public function recupererDonnees(e:Event):void
    {
    var myvars:URLVariables=new URLVariables(e.target.data);
    
    grdAffichage.removeAll();
    
    var i:uint;
    for(i=1; i<=myvars.nbusers; i++) {
    
    var objUser:Object = {
    login:myvars["login"+i],
    pwd:myvars["pwd"+i],
    email:myvars["email"+i]
    };
    grdAffichage.addItem(objUser);
    
    }
    }
    

    Nous utilisons la classe Object qui nous permet de construire facilement une ligne de grille DataGrid.

    Que s’est-il passé ?

    Nous avons utilisé un script PHP pour retourner des informations d’une base de données.

    Nous avons vu l’utilisation des classes URLRequest, URLLoader, URLVariables pour échanger des données. Comme dans l’étude précédente, le transfert des informations entre l’animation Flash et le script serveur s’est fait en utilisant la méthode POST.

    Sans filtre, toutes les données de la table sont affichées.

    Lorsqu’un filtre est saisit, le script PHP effectue une comparaison avec l’opérateur LIKE.

     
  • Notre première classe ActionScript 3.0

    Nous ne pouvons pas commencer à apprendre un nouveau langage de programmation sans réaliser le premier programme par défaut : « Hello World ! ».

    Pour créer un fichier ActionScript externe, choisissez Fichier -> Nouveau -> Fichier ActionScript. Au lieu d’un scénario et d’une scène, seule une grande zone d’édition de texte apparaît. Nous allons saisir le code suivant :

    package {
    import flash.display.*;
    import flash.text.*;
    
    public class HelloWorld extends MovieClip {
    
    public function HelloWorld() {
    
    var myText:TextField = new TextField();
    myText.text = "Hello World!";
    addChild(myText);
    }
    
    }
    }
    

    Pour que ce code fonctionne dans une animation, il faut créer une nouvelle animation du même nom que la classe (HelloWorld.fla) et lui indiquer la classe du document dans les propriétés.

    La classe HelloWorld

    Le lancement de cette animation va lancer l’affichage suivant :

    Le premier programme standard lors de l'apprentissage d'un nouveau langage

    Que s’est-il passé ?

    Le fichier de classe commence par déclarer qu’il s’agit d’un paquetage contenant une classe. Ensuite il définit les parties d’ActionScript requises dans le programme. Dans le cas présent il nous faut afficher des objets sur la scène et créer un champ texte, nous utiliserons les classes flash.display et flash.text[1] :

    La ligne de code suivante définit la classe :

    Notre classe ne contient qu’une seule fonction, du nom de classe et qui correspond au constructeur, c’est-à-dire qu’elle est executée immédiatement lorsque la classe est intialisée.

    Le constructeur crée et affiche un champ texte dans la scène avec le texte « Hello World ! ».

    Félicitations, vous venez de créer votre première application Flash en programmant avec ActionScript 3 !


    [1] Vous apprendrez rapidement quelles classes de bibliothèques vous sont nécessaires au début de vos programmes. En cas de doute, consultez l’entrée de la fonction dans l’aide de Flash afin de voir quelle bibliothèque de classe est concernée.

     
  • Lecture d’un fichier XML en ActionScript 3

    L’objectif est de réaliser un mini player mp3 sur la base de données provenant d’un fichier XML. Pour réaliser cette animation nous aurons besoins des classes URLLoader, URLRequest et XML pour la lecture du fichier XML.

    Définition du fichier XML

    Pour stocker les données, nous utiliserons la structure XML. Celui-ci devra contenir les informations sur chaque chanson, un titre, le nom de l’artiste, le nom et l’URL du fichier mp3 et une éventuelle description.
    Voici un fichier XML qu’il vous faudra adapter en fonction de vos chansons préférées :-)

    
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <playlist>
    <piste>
    <titre>Summertime</titre>
    <artiste>Peter Gabriel</artiste>
    <fichier>01 Summertime - by Peter Gabriel.mp3</fichier>
    <description><![CDATA[Excellente interprétation de Peter Gabriel pour ce standard maintes fois repris dans toutes sortes de styles.]]>
    </description>
    </piste>
    <piste>
    <titre>Nice Work If You Can Get It</titre>
    <artiste>Sting</artiste>
    <fichier>02 Nice Work If You Can Get It - by Sting.mp3</fichier>
    <description><![CDATA[Intéressant de voir ce standard de jazz interprété par Sting!
    Il s'agit d'un tout autre style de musique que Police...]]>
    </description>
    </piste>
    <piste>
    <titre>It Ain't Necessarily So</titre>
    <artiste>Cher</artiste>
    <fichier>07 It Ain't Necessarily So - by Cher.mp3</fichier>
    <description><![CDATA[Cher interprète avec merveille ce standard de jazz.]]>
    </description>
    
    </piste>
    <piste>
    <titre>The Man I Love</titre>
    <artiste>Kate Bush</artiste>
    <fichier>08 The Man I Love - by Kate Bush.mp3</fichier>
    <description><![CDATA[Kate Bush nous avait jusqu'alors caché ses talents de chanteuse Jazz.]]>
    </description>
    
    </piste>
    </playlist>
    
    </pre>
    

    Le concept de l’animation est simple, il s’agit de lire le fichier XML et d’afficher les données dans un composant DataGrid dans Flash. Lorsque l’on double clique sur une chanson, celle-ci est lue en utilisant les classes  Sound et SoundChannel.

    Comme pour les autres animations nous commencons par créer une classe dans un fichier script ActionScript, nous appelerons notre classe playerMusic.

    Dans le constructeur nous initialisons un composant DataGrid et nous chargeons le fichier XML en mémoire. Nous déclarons également un écouteur qui pointe vers une méthode remplirDataGrid qui sera exécutée lorsque le fichier sera entièrement chargé.

    public class playerMusic extends MovieClip {
    
    public var grdList:DataGrid;
    public var req:URLRequest = new URLRequest("playlist.xml");
    public var loader:URLLoader;
    
    public function playerMusic():void
    {
    
    // Initialisation du composant DataGrid
    grdList = new DataGrid();
    grdList.x = 5;
    grdList.y = 1;
    grdList.width = 540;
    grdList.height = 380;
    grdList.rowHeight = 30;
    addChild(grdList);
    
    loader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, remplirDataGrid);
    loader.load(req);
    
    }
    

    Lecture du fichier XML

    Nous déclarons une variable de type XML, une classe qui nous permettra de parser notre fichier. Nous accédons ensuite aux différentes branche de notre structure XML par leur nom : titre, artiste, fichier, description.
    Par la suite, il faut ajouter un événement pour gérer le double clic sur une ligne correspondant à une chanson, celle-ci va appeler une nouvelle méthode playSong. Notez qu’il s’agit d’un écouteur sur l’événement ListEvent.ITEM_DOUBLE_CLICK.

    
    public function remplirDataGrid(e:Event):void
    {
    
    var chanson:XML = new XML(e.target.data);
    var i:Number;
    
    // Lecture de chaque élément PISTE
    
    for(i=0; i < chanson.piste.length(); i++) {
    
    var objPlayList:Object = {
    titre:chanson.piste[i].titre.text(),
    artiste:chanson.piste[i].artiste.text(),
    fichier:chanson.piste[i].fichier.text(),
    description:chanson.piste[i].description.text()
    };
    grdList.addItem(objPlayList);
    }
    
    grdList.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, playSong);
    }
    

    Lecture du fichier son

    Si un fichier est en cours de diffusion, nous le stoppons avant de charger celui qui a été sélectionné.

    
    public function playSong(e:ListEvent):void
    {
    if (channel) {
    channel.stop();
    }
    var reqSound:URLRequest = new URLRequest(e.item.fichier);
    snd = new Sound(reqSound);
    channel = snd.play();
    }
    

    Code complet de l’animation

    Définition du package et des variables

    
    package {
    
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import fl.controls.*;
    import fl.events.ListEvent;
    import flash.media.*;
    import flash.text.*;
    
    public class playerMusic extends MovieClip {
    
    public var grdList:DataGrid;
    public var req:URLRequest = new URLRequest("playlist.xml");
    public var loader:URLLoader;
    public var txtInfo:TextField;
    public var snd:Sound;
    public var channel:SoundChannel;
    

    Constructeur de la classe

    
    public function playerMusic():void
    {
    
    // Initialisation du composant DataGrid
    grdList = new DataGrid();
    grdList.x = 5;
    grdList.y = 1;
    grdList.width = 540;
    grdList.height = 380;
    grdList.rowHeight = 30;
    addChild(grdList);
    
    loader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, remplirDataGrid);
    loader.load(req);
    
    // Champ texte pour diffuser certaines informations
    txtInfo = new TextField();
    txtInfo.x = 5;
    txtInfo.y = 390;
    txtInfo.width = 500;
    txtInfo.height = 20;
    addChild(txtInfo);
    }
    

    Lecture du fichier XML

    
    public function remplirDataGrid(e:Event):void
    {
    
    var chanson:XML = new XML(e.target.data);
    var i:Number;
    
    // Lecture de chaque élément PISTE
    for(i=0; i < chanson.piste.length(); i++) {
    
    var objPlayList:Object = {
    titre:chanson.piste[i].titre.text(),
    artiste:chanson.piste[i].artiste.text(),
    fichier:chanson.piste[i].fichier.text(),
    description:chanson.piste[i].description.text()
    };
    grdList.addItem(objPlayList);
    }
    
    grdList.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, playSong);
    }
    

    Diffusion du fichier son

    
    public function playSong(e:ListEvent):void
    {
    if (channel) {
    channel.stop();
    }
    var reqSound:URLRequest = new URLRequest(e.item.fichier);
    snd = new Sound(reqSound);
    channel = snd.play();
    }
    
    }
    }
    

    Voici le résultat de l’animation Flash :

    Playermusic Screenshot

    Que s’est-il passé ?

    Dans cette étude cas nous avons appris à lire un document XML en utilisant la classe XML. Nous avons vu que les classes URLRequest et URLLoader sont également nécessaires pour charger n’importe quel document externe. Nous avons utilisé deux nouvelles classes Sound et SoundChannel qui nous permettent de diffuser un fichier son.

     
  • Bonjour tout le monde !

    Bienvenue sur mon nouveau site. Suite à de nombreux commentaires relatifs au manque de lisibilité et surtout de l’impossibilité de copier les exemples car ils étaient sous forme d’image, voici en guise de cadeau de Noël 2009, les articles réécrit dans WordPress en utilisant un plugins particulier permettant de sélectionner le code. Toutefois, l’indentation n’est pas respectée. En cas de ré-utilisation, il vous faudra quand même travailler un petit peu :-)

    Bonne lecture et à bientôt !