Accessibilité

Didacticiels

Référence

Macromedia Flash 8 Advanced for Windows and Macintosh:
Visual QuickPro Guide

écrit par Russell Chun et H. Paul Robertson

www.peachpit.com

Couverture de livre

Ressources

Extrait de « Macromedia Flash 8 Advanced for Windows and Macintosh: Visual QuickPro Guide »
écrit par Russell Chun et H. Paul Robertson
© 2006. Utilisé avec l’autorisation de Peachpit. Pour acheter ce livre, rendez-vous sur le site www.peachpit.com.

Email to a friendEmail to a friend

Optimisez votre vidéo Flash en y ajoutant du son

L’ajout de séquences audio dans votre vidéo Adobe® Flash® améliore l’animation et l’interactivité, et rend plus attrayant le projet le plus basique en faisant appel au sens auditif de l’utilisateur. Vous pouvez écouter de la musique en tâche de fond pour créer l’atmosphère de la vidéo, utiliser la narration pour accompagner une histoire ou associer des sons aux actions, par exemple le clic des boutons et le glisser-déposer. Flash prend en charge plusieurs formats audio pour l’importation, notamment WAV, AIF et MP3, ce qui vous donne accès à une grande variété de sons. Flash offre également des options qui permettent d’exporter des séquences audio, en passant d’un taux de compression de qualité vocale à un taux de qualité MP3, tout en conservant une taille de fichier Flash minimale.

Ce didacticiel examine la classe Sound, classe Flash qui permet de gérer le son avec ActionScript. Vous êtes sans doute déjà familiarisé avec les notions de base de gestion des sons dans Flash, notamment leur importation et leur attribution aux images clés avec les options Evénement, Début, Arrêt et Stream Sync (Synchronisation de flux). Si vous n’êtes pas à l’aise avec certaines techniques, consultez les didacticiels et l’aide en ligne de Flash pour en savoir plus. Vous découvrirez comment utiliser la classe Sound pour diffuser des sons de la bibliothèque en mode dynamique sans avoir à les associer à des images clés.

Toutes les méthodes, les propriétés et les événements de la classe Sound vous offrent à la fois souplesse et puissance pour intégrer de manière créative des séquences audio dans les vidéos. Vous pouvez créer un curseur pour permettre aux utilisateurs de changer le volume, par exemple, ou ajouter à un jeu d’arcade des séquences audio personnalisées en fonction du contexte.

Utiliser la classe Sound

Attacher un fichier audio à une image clé dans le panneau Montage est une opération simple pour intégrer des séquences audio dans votre film. Il existe deux manières d’intégrer du son dans le panneau Montage : utiliser l’option Event Sync (Synchronisation d’événement) pour déclencher le son d’un clic lorsque l’état du bouton est Enfoncé et l’option Stream Sync (Synchronisation de flux) pour synchroniser les dialogues avec une animation. Mais si vous souhaitez contrôler le moment d’exécution du son, le changement de volume et la diffusion dynamique sur les enceintes gauche et droite, ou encore l’extraction d’informations sur le nombre de secondes écoulées, reportez-vous à la classe Sound.

Les méthodes de la classe Sound contrôlent le comportement de lecture du son, tandis que les propriétés de la classe Sound permettent de gérer le minutage et collecter des informations sur le fichier MP3. La classe Sound doit être instanciée à l’aide d’une fonction du constructeur et affectée à une variable. Lorsque l’objet Sound est nommé, vous pouvez l’utiliser pour lire et modifier des fichiers audio qui lui sont associés.

Pour créer un objet Sound global :

  1. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  2. Entrez var puis le nom du nouvel objet Sound suivi de « :Sound » pour indiquer le type de données. A la fin de la ligne, entrez le signe « égal » (=).
  3. Choisissez Classes ActionScript 2.0 > Media > Sound > « nouveau son » (Figure 1). La nouvelle fonction du constructeur Sound() s’affiche dans le panneau Script. Le constructeur peut éventuellement choisir un objet MovieClip comme paramètre. Dans ce cas, l’objet Sound contrôle la séquence audio de ce clip vidéo. En ne spécifiant pas de clip vidéo, vous créez un objet Sound qui contrôle toutes les séquences audio du document Flash.
Instruction complète

Figure 1 : L’instruction complète dans le panneau Script crée l’objet Sound appelé mySound_sound.

Ajouter des sons

Une fois que votre nouvel objet Sound a été instancié, vous devez lui associer un son. Vous pouvez charger et importer un fichier MP3 externe dans l’objet Sound ou lui associer un son de la bibliothèque. Si vous utilisez plusieurs sons importés dans votre bibliothèque, vous devez préciser à l’objet Sound lequel doit être lu et contrôlé.

Pour identifier les sons dans la bibliothèque, utilisez l’option Liaison. En outre, cette option permet d’incorporer le fichier audio dans le fichier SWF pour qu’il soit disponible lorsqu’il est appelé par l’objet Sound. Lorsqu’un identifiant de liaison est attribué à un son importé, associez-le à un objet Sound à l’aide de la méthode attachSound().

Pour associer le son d’une bibliothèque à l’objet Sound :

  1. Continuons avec le fichier que vous avez créé à l’étape précédente. Importez un fichier audio en choisissant Fichier > Importer > Importer dans la bibliothèque et en sélectionnant un fichier. Le fichier audio que vous avez sélectionné s’affiche dans la bibliothèque. Les formats que vous pouvez importer sont les suivants : AIF (Mac), WAV (Windows) et MP3 (Mac et Win). D’autres formats sont disponibles si QuickTime est installé sur votre ordinateur.
  2. Sélectionnez le symbole son dans votre bibliothèque.
  3. Dans le menu Options, choisissez Liaison (Figure 2). La boîte de dialogue Propriétés de liaison s’affiche.
Choisissez l’option Liaison

Figure 2 : choisissez l’option Liaison dans la bibliothèque pour chaque son à associer.

  1. Dans la section Liaison, cochez la case Exporter pour ActionScript. Laissez l’option « Exporter dans la première image » sélectionnée.
  2. Dans le champ Identifiant, entrez un nom qui permettra d’identifier le son (Figure 3).
Son guitarsLoopID

Figure 3 : la séquence audio s’appelle guitarsLoopID et sera insérée dans le fichier SWF exporté.

  1. Cliquez sur OK. Flash exporte la séquence audio sélectionnée dans le fichier SWF avec son identifiant unique. Ainsi, elle sera disponible pour être associée à l’objet Sound.
  2. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  3. Sur la ligne suivante, après la nouvelle fonction du constructeur Sound, entrez le nom de l’objet Sound suivi d’un point.
  4. Choisissez Classes ActionScript 2.0 > Media > Sound > Methods > attachSound. Vous pouvez également choisir attachSound dans le menu déroulant Indicateurs de code.
  5. Placez le pointeur entre les parenthèses, cliquez et entrez l’identificateur de liaison du son de votre bibliothèque entre guillemets (Figure 4). Votre son est associé à l’objet Sound. Il est très important de spécifier l’identificateur de liaison entre guillemets. Flash peut ainsi interpréter la chaîne de caractères comme un littéral de l’identifiant et non comme une expression à calculer pour déterminer le nom de l’identifiant.
Méthode attachSound()

Figure 4 : la méthode attachSound() permet d’associer un son de la bibliothèque (“guitarsLoopID”) à l’objet Sound (mySound_sound).

Ecouter les sons

Une fois que vous avez créé un nouvel objet Sound et que vous lui avez associé un son de la bibliothèque, vous pouvez l’écouter. Utilisez le la méthode start() pour écouter la séquence audio à partir de l’objet Sound. La méthode start() fait appel à deux paramètres : secondsOffset et loops.

Le paramètre secondsOffset est un nombre (secondes) qui détermine l’endroit dans la séquence audio où la diffusion démarre. Vous pouvez la démarrer à partir du début ou à n’importe quel endroit de la séquence audio. Si la séquence audio associée à l’objet Sound dure 20 secondes, par exemple, le paramétrage de secondsOffset sur 10 permettra de démarrer l’écoute au milieu de la séquence. Il ne s’agit pas d’un délai de 10 secondes à l’issue duquel la diffusion démarre, mais plutôt le démarrage immédiat en commençant à la 10e seconde de la séquence audio.

Le paramètre loops est un nombre qui détermine le nombre de diffusions de la séquence audio. Un paramétrage sur 2 indique que la séquence sera diffusée deux fois sans interruption. Si aucun paramètre n’est défini pour la méthode start(), Flash diffuse la séquence audio depuis le début et une seule fois.

Pour écouter une séquence audio :

  1. Continuons avec le fichier que vous avez utilisé à l’étape précédente. Créez un bouton, placez une instance sur la scène et nommez-le dans l’inspecteur de propriétés. Vous allez définir pour ce bouton des scripts de démarrage de la séquence audio.
  2. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  3. A la fin du script en cours, attribuez un gestionnaire d’événements onRelease au bouton.
  4. Dans la fonction du gestionnaire d’événements, entrez le nom de l’objet Sound suivi d’un point.
  5. Choisissez Classes ActionScript 2.0 > Media > Sound > Methods > start.
  6. Placez le pointeur entre les parenthèses, cliquez et entrez 0 suivi d’une virgule puis du chiffre 5 (Figure 5). Le paramètre secondsOffset est défini sur 0 et le paramètre loops sur 5.
panneau Script

Figure 5 : une partie du panneau Script indique le gestionnaire onRelease appliqué au bouton nommé startButton_btn. L’appel de cette méthode start() diffuse 5 fois la séquence audio associée à mySound_sound.

  1. Testez votre film. Lorsque l’utilisateur clique sur le bouton, la séquence audio démarre depuis le début et est diffusé cinq fois.

Conseils

  • Malheureusement, vous ne pouvez pas paramétrer la méthode start() pour diffuser la séquence audio en boucle. En revanche, vous pouvez définir le paramètre sur un nombre ridiculement élevé, par exemple 99 999.
  • La méthode start() diffuse le son associé chaque fois qu’elle est appelée, même si la séquence audio est en cours de lecture. Cette situation génère plusieurs diffusions audio simultanées. Par exemple, lorsque l’utilisateur clique plusieurs fois sur le bouton créé à l’étape précédente, la séquence audio est diffusée plusieurs fois, chaque instance se superposant à la suivante. Pour éviter cela, insérez une méthode stop() (voir la section suivante) juste avant la méthode start(). Cette technique permet d’attendre la fin de la diffusion d’une séquence audio avant de la redémarrer.
  • La méthode start() diffuse toujours la séquence audio en cours associée à l’objet Sound. Cela signifie que vous pouvez associer plusieurs séquences audio de la bibliothèque au même objetSound. Ainsi, la méthode start() diffuse la séquence la plus récente. Vous pouvez créer trois boutons et leur attribuer le script suivant :
var:my_sound:Sound = new Sound();
firstButton_btn.onRelease = function() {
my_sound.attachSound
(“Hawaiian”);
};
secondButton_btn.onRelease = function() {
my_sound.attachSound (“Jazz”);
};
startButton_btn.onRelease = function() {
my_sound.start(0, 1);
};

Lorsque vous cliquez sur firstButton_btn, puis sur startButton_btn, le morceau de musique hawaïenne est diffusé. Lorsque vous cliquez sur secondButton_btn, puis sur startButton_btn, le morceau de jazz est diffusé. Si vous démarrez le morceau de jazz avant la fin du morceau de musique hawaïenne, les deux morceaux sont diffusés en même temps.

Pour arrêter une séquence audio :

  1. Continuons avec le fichier que vous avez utilisé à l’étape précédente. Placez une autre instance du bouton sur la scène, et attribuez-lui un nom d’instance dans l’inspecteur de propriétés.
  2. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  3. Attribuez un gestionnaire d’événements onRelease à la nouvelle instance du bouton.
  4. Entrez le nom de votre objet Sound suivi d’un point.
  5. Choisissez Classes ActionScript 2.0 > Media > Sound > Methods > stop.
    (Figure 6).
stopButton_btn.

Figure 6 : une partie du panneau Script indique le gestionnaire onRelease appliqué au bouton nommé stopButton_btn. L’appel de cette méthode stop arrête la diffusion de la séquence audio associée à l’objet Sound mySound_sound. Cette méthode ne contient aucun paramètre.

  1. Testez votre film. Lorsque l’utilisateur clique sur ce bouton, toute séquence audio associée à l’objet Sound et en cours de lecture est arrêtée.

Pour arrêter toutes les séquences audio :

  • Choisissez Fonctions globales > Contrôle du scénario > stopAllSounds (Echap + ss). Lorsque ce script est exécuté, Flash arrête toutes les séquences audio, qu’elles soient associées ou non à un objet Sound ou diffusées ou non depuis le panneau Montage.

Modifier les sons

Lorsque vous utilisez la classe Sound, Flash vous donne la maîtrise complète du volume et de la sortie son sur l’enceinte gauche ou droite, appelé également balance horizontale. Avec ce niveau de contrôle audio, vous pouvez autoriser les utilisateurs à régler le volume et créer des environnements plus réalistes. Dans un jeu de voitures de course, par exemple, vous pouvez régler le volume du bruit des voitures lorsqu’elles approchent ou passent devant vous. L’utilisation des contrôles de la balance permet d’améliorer le jeu classique du ping-pong en réglant le son de la balle qui touche la raquette et le mur de chaque côté du camp.

Les deux méthodes utilisées pour modifier les sons sont setVolume() et setPan(). La méthode setVolume() sélectionne un paramètre compris entre 0 et 100, représentant le pourcentage du volume maximum ; 100 représente le volume maximum, et 0 le silence. La méthode setPan() utilise un paramètre compris entre –100 et 100. Le paramètre –100 diffuse le son entier sur l’enceinte gauche, le paramètre 100 diffuse le son entier sur l’enceinte droite et 0 diffuse le son de manière équilibrée entre les deux enceintes.

Pour régler le volume d’un son :

  1. Continuons avec le fichier que vous avez utilisé à l’étape précédente. Placez une autre instance du bouton sur la scène, et attribuez-lui un nom d’instance dans l’inspecteur de propriétés.
  2. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  3. A la fin du script en cours, attribuez un gestionnaire d’événements onRelease au nouveau bouton.
  4. Dans la fonction du gestionnaire d’événements, entrez le nom de l’objet Sound suivi d’un point.
  5. Choisissez Classes ActionScript 2.0 > Media > Sound > Methods > setVolume.
  6. Placez le pointeur entre les parenthèses, cliquez et entrez un nombre compris entre 0 et 100 (Figure 7).
volUp_btn.

Figure 7 : une partie du panneau Script indique le gestionnaire d’événements onRelease appliqué au bouton nommé volUp_btn. L’appel de la méthode setVolume() permet de restaurer le volume de l’objet Sound mySound_sound à 100 %. Le panneau Script indique également un gestionnaire onRelease pour le bouton nommé volDown_btn. L’appel de la méthode setVolume() permet de réduire le volume de l’objet Sound mySound_sound à 20 %.

  1. Testez votre film. Démarrez d’abord la séquence audio. Lorsque vous cliquez sur le nouveau bouton, le volume change en fonction du paramètre associé.

Pour régler la balance droite et gauche d’un son :

  1. Continuons avec le fichier que vous avez utilisé à l’étape précédente. Placez une autre instance du bouton sur la scène, et attribuez-lui un nom d’instance dans l’inspecteur de propriétés.
  2. Sélectionnez le premier bloc du montage principal et ouvrez le panneau Scripts.
  3. A la fin du script en cours, attribuez un gestionnaire d’événements onRelease au nouveau bouton.
  4. A l’intérieur des accolades du gestionnaire d’événements, entrez le nom de l’objet Sound suivi d’un point.
  5. Choisissez Classes ActionScript 2.0 > Media > Sound > Methods > setPan.
  6. Placez le pointeur entre les parenthèses, cliquez et entrez un nombre compris entre -100 et 100 (Figure 8). Ce nombre unique contrôle la balance entre les enceintes gauche et droite.
Gestionnaires onRelease

Figure 8 : une partie du panneau Script indique les gestionnaires onRelease des boutons rightSpeaker_btn, leftSpeaker_btn et bothSpeakers_btn.

  1. Testez votre film. Démarrez d’abord la séquence audio. Lorsque vous cliquez sur ce bouton, la balance gauche-droite change en fonction du paramètre de la balance horizontale.