Jouer une musique avec Flash et la POO

By 24 janvier 2011Adobe Flash, Tutoriels

Nous avons déjà vu dans un exemple précédent, comment jouer une musique depuis l’environnement auteur de Flash. Aujourd’hui, nous allons lancer une musique de manière automatique sans mettre une seule ligne de code sur le scénario de la Timeline principale. Pour ce tutoriel, nous utiliserons 2 fichiers :

  1. son.fla
  2. Son.as (attention à la majuscule)

Avertissement : la Programmation Orientée Objet (POO) est un vaste sujet et je ferai l’impasse dans cet article, sur beaucoup de notions complexes. Il convient déjà de faire fonctionner ce premier essai avant de passer à la suite.

Notre première classe en AS3

Voici le code minimal à copier dans un fichier .as pour créer une classe. Cette classe se nomme Son (la majuscule en début du mot est une convention que je vous invite à respecter pour prendre de bonnes habitudes de programmation). Le mot package (paquetage) est obligatoire et indique le chemin (pas de paramètres = dossier courant). Votre fichier de classe doit se trouver au même niveau que votre animation Flash.

package
{
    public class Son extends MovieClip
    {
        // tout le code de la classe ici !
    }
}

Remarque : le mot-clé extends signifie que cette classe hérite d’une autre classe. On en parlera une autre fois.

Propriétés

Les propriétés, ce sont les variables traditionnelles, rapportées aux objets créés avec cette classe (ce modèle). Ajoutons maintenant 2 propriétés à notre petite classe :

package
{
    public class Son extends MovieClip
    {
        private var son:Sound; // les on lui-même
        private var canal:SoundChannel; // un canal audio pour ce son
    }
}

Remarque : le mot-clé private signifie que ces variables ne seront visibles qu’à l’intérieur de cette classe.

Le constructeur

Il convient d’abord d’ajouter une fonction particulière, appelé constructeur de la classe. Cette fonction (automatiquement publique) est appelée une fois lors de la création d’un objet à partir de cette classe. Elle porte obligatoirement le même nom que le fichier Son.as (avec la majuscule !). Dans le constructeur, on initialisera les propriétés de la classe mais on peut aussi invoquer des méthodes.

package
{
    public class Son extends MovieClip
    {
        private var son:Sound; // les on lui-même
        private var canal:SoundChannel; // un canal audio pour ce son

        // le constructeur de la classe
        public function Son() {
            trace("ça marche"); // pour tester
            son = new Sound(); // on crée un objet depuis une classe native de Flash
            canal = new SoundChannel(); // pareil
        }
    }
}

Pour que tout ceci fonctionne sans encombres, nous devons importer des classes natives de Flash au début de notre package (pas d’explication supplémentaire pour le moment dans le cadre de ce petit tuto).

package
{

    import flash.display.MovieClip;
    import flash.media.Sound;
    import flash.media.SoundMixer;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;

    public class Son extends MovieClip
    {
        private var son:Sound; // les on lui-même
        private var canal:SoundChannel; // un canal audio pour ce son

        // le constructeur de la classe
        public function Son() {
            trace("ça marche"); // pour tester
            son = new Sound(); // on crée un objet depuis une classe native de Flash
            canal = new SoundChannel(); // pareil
        }
    }
}

Les méthodes

Les méthodes, ce sont les fonctions et les procédures de la programmation traditionnelle, rapportées ici aussi aux membres de la classe. Pour notre petite classe Son, nous allons simplement écrire une méthode joue() pour jouer un son.

package
{

    import flash.display.MovieClip;
    import flash.media.Sound;
    import flash.media.SoundMixer;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;
    import flash.events.ProgressEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;

    public class Son extends MovieClip
    {
        private var son:Sound; // les on lui-même
        private var canal:SoundChannel; // un canal audio pour ce son

        // le constructeur de la classe
        public function Son() {
            son = new Sound(); // on crée un objet depuis une classe native de Flash
            canal = new SoundChannel(); // pareil
        }
public function joue():void {
canal = son.play(0);
}
}
}

Liaison avec l’animation principale

Une dernière chose importante : la liaison de notre classe avec notre fichier Flash (.fla). Dans l’onglet Propriétés mettez le nom de votre classe dans le champ « Classe du document » comme indiqué sur la capture d’écran ci-dessous

classe du document

Téléchargements

Je vous ai ajouté une musique dans le zip pour tester tranquillement.

Voici les fichiers à télécharger pour tester par vous-même.

Fichier zip à télécharger exemple flash poo

Si vous avez des soucis, n’hésitez pas à utiliser les commentaires, c’est fait pour 😉

Laisser un commentaire