La gestion du son en AS3 est logique si on se réfère au fonctionnement d'une table de mixage audio!



Documents pareils
1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Manuel d Utilisation Nouvelle Plateforme CYBERLIBRIS : ScholarVox Management

Messages d'erreurs. Redémarrez votre PC en cliquant sur Démarrer, en sélectionnant ensuite Arrêter puis en cochant Redémarrer

Tutoriel n 3. Comment préparer votre support de présentation (vidéo)? Plugin «rich media» pour Moodle 2

Manuel d utilisation NETexcom

Didacticiel de mise à jour Web

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Comment enregistrer simplement toute musique restituée par votre PC

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

Ripper vos DVD (extraire vos fichier du DVD pour les mettre sur votre pc)

Création d un diaporama photo sur fond musical avec iphoto et itunes dans un contexte scolaire

Écrit par Riphur Riphur.net

Configuration de la Borne Interactive

Exposer ses photos sur Internet

EXTRACTION ET RÉINTÉGRATION DE COMPTA COALA DE LA PME VERS LE CABINET

MEDIAplus elearning. version 6.6

NAS 206 Utiliser le NAS avec Windows Active Directory

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

PHPWEBSITE -Tutoriel image

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Sommaire 1 CONFIGURER SA MESSAGERIE 2 2 CONSULTER VOS MAILS SUR INTERNET (WEBMAIL) 7 3 PROBLEMES POSSIBLES 8

DOCUMENTATION VISUALISATION UNIT

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Guide des fonctions avancées de mywishtv

Tune Sweeper Manuel de l'utilisateur

Dropbox, stocker et partager des fichiers

Maintenance de son PC

Publipostage et étiquettes

Installation de Windows 2008 Serveur

Cloner son système avec True Image

Administration du site (Back Office)

Formations au tournage et au montage vidéo. Monter un film avec. Imovie 11

Diffusion d'images en multicast avec Clonezilla en établissement

Installation de Windows 2003 Serveur

Guide d'utilisation du Serveur USB

Rendre un plan de cours interactif avec Médiator

Créer des documents interactifs

Chapitre 4 : Guide de Mouvement et Masque

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

FANTEC DB-229US Manuel de l'utilisateur

Le meilleur de l'open source dans votre cyber cafe

Rechercher et supprimer les doublons!

Utilisation de la clé USB et autres supports de stockages amovibles

CALAMEO. Publier et partager vos documents sur la toile

LA TABLETTE, UN OUTIL POLYVALENT!

Guide de l utilisateur Mikogo Version Windows

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Edutab. gestion centralisée de tablettes Android

Ref : Résolution problème d'accès aux supports de cours

Classer et partager ses photographies numériques

Navigation dans Windows

Prise en main du logiciel Smart BOARD

Sauvegarde des données du scribe sur disque USB

Nous venons de voir que la tablette Kindle Fire est une excellente liseuse et un agréable

Installation des caméras IP

1. Installation du Module

Windy and Warm. Créer un serveur LAN (SERVEUR) Création d'un serveur LAN Version FS_MOD 1.4.

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Java 7 Les fondamentaux du langage Java

Ajouter un cache SSD à son ordinateur

Bureau Virtuel Lyon 2

SPECIFICATIONS TECHNIQUES BANNIERES SITES PRISMA / TABLETTES / MOBILE

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

LES NOUVEAUTÉS DE ARCON 15 PRO

FORMATION MULTIMÉDIA LVE

Sql Server 2005 Reporting Services

Qu est ce qu une bibliothèque?

Manuel d utilisation JeResilieMonContrat.com. pour l agent

Sauvegarde et restauration d'un système d'exploitation Clonezilla

PCTV Systems TVCenter

Installation et configuration de base de l active Directory

Fonctionnement de Windows XP Mode avec Windows Virtual PC

Spécificités Techniques créations publicitaires

PLAN. Qui peut faire quoi? Présentation. L'internaute Consulte le site public

L écran du marais : Comment configurer le viewer OpensSim

Mon Mac & Moi : Addendum de 3M/023 Tout sur ipod. Réf : 3M/023A

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Mise en place Active Directory, DNS Mise en place Active directory, DNS sous Windows Serveur 2008 R2

10. Envoyer, recevoir des mails

Guide des Spécifications Techniques

Notice succincte pour ordinateurs Windows - IPC-10 AC

Retrospect 7.7 Addendum au Guide d'utilisation

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

TRUCS & ASTUCES SYSTEME. 1-Raccourcis Programme sur le Bureau (7)

Application de lecture de carte SESAM-Vitale Jeebop

Gérer les règles de prix catalogue sur Magento

Dongle WiFi de QUMI Manuel de l utilisateur

Le pare-feu de Windows 7

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

CRÉER UN DVD VIDEO avec DVD FLICK (avec ou sans menu)

Comment utiliser le lecteur MP3?

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

VRM Monitor. Aide en ligne

Transcription:

Introduction La gestion du son en AS3 est logique si on se réfère au fonctionnement d'une table de mixage audio! En AS 1 et 2, il suffisait d'instancier la classe Sound() et nous avions alors accès à toutes ses méthodes et propriétés. Pour gérer plusieurs sons en même temps, il fallait savoir qu'il était nécessaire d'instancier la classe Sound() en passant le nom d'une occurrence entre les parenthèses de la classe Sound(). Aujourd'hui, le principe de lecture et de contrôle d'un son passe par un minimum de 3 classes : Sound(), SoundChannel() et SoundTransform(). Cette "complexité" est une fois de plus liée à l'architecture du langage. Voici un exemple d'animation qui gère la lecture de deux sons en cliquant sur deux occurrences de Clip, vous pouvez mettre la lecture en pause, cliquer sur la jauge de lecture et régler le niveau sonore (Commencez par cliquer sur l'un des deux boutons Piano1 ou Piano2) : [Télécharger le.fla] Remarque : Il est normal que la jauge qui indique la part de lecture "s'emballe" au début de l'écoute, il est en effet impossible de connaître la durée d'un son tant qu'il n'est pas complètement chargé. Pour résoudre le problème, il faudrait lire cette information dans un tag du fichier mp3. Avant de nous lancer dans l'apprentissage de la gestion du son en AS3, essayons de 1 / 22

comprendre le principe suivant : D'un point de vue professionnel, lorsque vous lancez l'écoute d'un son, cela se fait sur une piste précise (voir l'image de la table de mixage ci-dessous). Vous associez une piste à un son pour pouvoir le contrôler indépendamment des autres (même si vous ne gérez qu'un seul son), en ActionScript, nous devons donc reproduire le même "schéma"! Pour effectuer vos premiers essais, vous pouvez utiliser les fichiers ci-dessous qui sont très courts et libres de droits (effectuez un clic-droit sur chaque lien et sélectionnez la commande Enregistrer la cible sous...) : Son de Piano N 1 Son de Piano N 2 Son de Piano N 3 Son de Piano N 4 Lire un son Pour pouvoir écouter un son dans une animation Flash, vous devez "créer un nouveau son" et le lire, en le chargeant préalablement. Pour ce faire, vous devez instancier les classes Sound() et URLRequest(). var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); ecoute.load(adressefichierson); 2 / 22

Remarque : L'adresse du fichier que vous indiquez entre les parenthèses de la classe URLRequest() est relative à la page HTML qui contient le SWF. Lorsque vous avez saisi ces 3 lignes d'instructions, vous pouvez ensuite demander la lecture du son : ecoute.play(); Remarque : Si le script ce-dessus vous semble un peu complexe, vous pouvez vous dispenser du typage. var ecoute = new Sound(); var adressefichierson = new URLRequest("Piano1.mp3"); ecoute.load(adressefichierson); ecoute.play(); [Télécharger le.fla] 3 / 22

Avant de poursuivre nos explications, voici une photo qui représente une table de mixage audio. Observez attentivement les 3 textes qui y sont associés avant de poursuivre la lecture de cette ressource. Contrôler un son Lorsque vous allez vouloir contrôler la lecture et l'arrêt d'un son, vous rencontrerez peut-être un premier problème si vous n'avez pas gardé à l'esprit qu'il est indispensable d'associer la lecture d'un son à une piste. Voici donc le script à utiliser dès que vous aurez placé sur la scène, deux occurrences de type Clip intitulées boutonlecture et boutonarret. 4 / 22

var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); boutonarret.addeventlistener(mouseevent.mouse_down,arreterson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); function arreterson(evt:mouseevent) { piste1.stop(); 5 / 22

Lorsque vous exécuterez le script ci-dessus, si vous double-cliquez sur le bouton Lecture, vous découvrirez peut-être que vous entendez de l'écho. Cela est dû au fait que le son se lance deux fois. Si vous effectuez d'ailleurs 3 clics au lieu de 2, vous entendez 3 fois le son se jouer. Pour éviter ce bug, vous devez adapter votre script de la façon suivante : var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); boutonarret.addeventlistener(mouseevent.mouse_down,arreterson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.mouseenabled = false; 6 / 22

function arreterson(evt:mouseevent) { piste1.stop(); boutonlecture.mouseenabled = true; [Télécharger le.fla] Comme vous pouvez le constater, nous avons ajouté la ligne d'instruction qui permet d'annuler la reconnaissance du clic sur l'occurrence boutonlecture, mais nous devons penser à rétablir l'état cliquable du bouton pour pouvoir relancer la lecture du son. Pour donner l'impression que le bouton Lecture n'est pas actif, vous pouvez utiliser la propriété alpha et la régler à 0.5 pour rendre l'occurrence légèrement transparente (Pensez à la rendre à nouveau opaque lorsque vous arrêtez le son et que le son s'arrête automatiquement). Consultez la ressource liée aux filtres pour appliquer et retirer éventuellement une ombre portée au bouton Lecture en fonction de l'écoute d'un son. Remarque : Si vous attendez la fin de la lecture du son, vous constaterez que vous ne pouvez pas relancer le son. C'est normal, vous devez gérer les actions à exécuter à la fin de la lecture d'un son. Consultez le développement "Gérer la fin de la lecture d'un son" plus loin dans cette page. 7 / 22

Pour arrêter un son, si les propos ci-dessus vous semblent trop abstraits, et si vous ne gérez qu'un seul son à la fois, vous pouvez dans ce cas utiliser la ligne d'instruction ci-dessous : SoundMixer.stopAll() Contrôler le démarrage du son et le nombre de répétitions (boucles) Pour démarrer la lecture d'un son à partir d'un instant précis, indiquez entre les parenthèses de la méthode play(), le nombre de millisecondes à partir desquelles la lecture doit commencer. piste1 = ecoute.play(2000,1); Dans cet exemple, la lecture démarre à la deuxième seconde (à partir de la 2000e milliseconde, soit l'équivalent de 2 secondes). Pour lire un son plusieurs fois, vous devez préciser le nombre de répétitions entre les parenthèses de la méthode play(), au niveau du deuxième paramètre. Dans l'exemple qui va suivre, la lecture du son va s'exécuter 5 fois, à partir du début. piste1 = ecoute.play(0,5); Nous pourrions également combiner les deux paramètres que nous venons de voir, dans l'exemple ci-dessous, un son va être joué 3 fois à partir de la 7e seconde : piste1 = ecoute.play(7000,3); 8 / 22

Gérer la fin de la lecture d'un son Lorsqu'un son se termine, il est très important de le savoir pour pouvoir agir en conséquence : (ex. : Enchaîner un autre son, afficher ou masquer une occurrence, rendre le bouton lecture à nouveau cliquable (s'il a préalablement été rendu non-cliquable avec la propriété mouseenabled), etc.). Voici l'exemple d'un script ou le bouton Lecture redevient cliquable : piste1.addeventlistener(event.sound_complete,ecoutesonterminee); function ecoutesonterminee(evt:event) { trace("fin du son"); Vous devez enregistrer un écouteur qui fait appel à l'évènement Event.SOUND_COMPLETE, et faire référence à l'instance de la classe SoundChannel(), c'est à dire piste1 dans notre exemple. Voici un exemple de script complet : var ecoute:sound = new Sound(); 9 / 22

var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.mouseenabled = false; piste1.addeventlistener(event.sound_complete,ecoutesonterminee); function ecoutesonterminee(evt:event) { boutonlecture.mouseenabled = true; 10 / 22

[Télécharger le.fla] Effectuer une pause lors de l'écoute d'un son L'une des difficultés dans le développement d'une fonctionnalité de pause pour un lecteur de fichier MP3 est relative à la réalisation du bouton pause en lui-même. Pour faire simple, vous pouvez donc créer un clip avec deux images clé. Sur la première, vous créez l'apparence d'un bouton pause, sur la deuxième, vous créez l'apparence d'un bouton de lecture (pensez à placer un stop() sur la première image clé de ce clip). Dans la mesure où la méthode pause() n'existe pas, nous devons donc la programmer en faisant appel à une variable qui va mémoriser la position de la tête de lecture au moment de la pause. Voici un exemple d'animation contenant un bouton pause qui autorise la lecture et la pause d'un son à partir d'un même bouton : var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; var positiontetememorisee:number = 0; ecoute.load(adressefichierson); 11 / 22

piste1 = ecoute.play(); btlecturepause.addeventlistener(mouseevent.mouse_down,ecouterson); function ecouterson(evt:mouseevent) { if (btlecturepause.currentframe==1) { positiontetememorisee=piste1.position; piste1.stop(); btlecturepause.gotoandstop(2); else { piste1 = ecoute.play(positiontetememorisee); btlecturepause.gotoandstop(1); 12 / 22

[Télécharger le.fla] Gérer le niveau du volume sonore Souvenez-vous de ce que nous vous avions dit au début de cette ressource, au sujet de la lecture d'un son. Elle doit (se faire) être associée à une piste. A partir de ce postulat, vous comprendrez mieux les lignes d'instructions ci-dessous : var reglagesaudio:soundtransform = piste1.soundtransform; btniveau100.addeventlistener(mouseevent.mouse_down,reglersona100) btniveau50.addeventlistener(mouseevent.mouse_down,reglersona50) btniveau10.addeventlistener(mouseevent.mouse_down,reglersona10) function reglersona100 (evt:mouseevent) { reglagesaudio.volume = 1; piste1.soundtransform = reglagesaudio; 13 / 22

function reglersona50 (evt:mouseevent) { reglagesaudio.volume = 0.5; piste1.soundtransform = reglagesaudio; function reglersona10 (evt:mouseevent) { reglagesaudio.volume = 0.1; piste1.soundtransform = reglagesaudio; [Télécharger le.fla] Nous déclarons (avec le mot var) et initialisons (en utilisant l'opérateur=) une variable (une instance de type SoundTransform) intitulée reglagesaudio qui stocke toutes les informations 14 / 22

actuelles relatives au volume et à la balance du son. L'instance reglagesaudio possède les propriétés volume et pan qui permettent de régler respectivement le volume et la balance d'un son. Après avoir modifié la valeur de la propriété volume de l'instance reglagesaudio, nous devons appliquer le changement en exécutant la ligne piste1.soundtransform = reglagesaudio. Vous l'aurez peut-être compris, pour régler le volume d'un son à 100%, vous devez utiliser la valeur 1, pour le régler à 10%, vous utiliserez la valeur 0.1. Attention, vous pouvez aller au delà de 1, le son sera plus fort, mais vous ne devez pas dépasser 4 car le son ne sera plus de bonne qualité. Remarques - Vous ne devez déclarer votre instance de type SoundTransform qu'à partir du moment où vous avez défini l'instance de type SoundChannel. Ainsi, dans le cas où vous initialiseriez votre instance de type SoundChannel dans une fonction, votre instance de type SoundTransform doit l'être également à ce moment-là. - Pour pouvoir augmenter ou diminuer le son à partir de deux boutons (un bouton pour augmenter le son, un autre pour le diminuer), vous devez utiliser les lignes d'instructions ci-dessous en remplacement de celles qui se trouvent dans les fonctions reglersona10, reglersona100 et reglersona100 ci-dessus. 15 / 22

reglagesaudio.volume += 0.1; piste1.soundtransform = reglagesaudio; Gérer la balance d'un son Consultez le développement relatif au réglage du niveau sonore d'un son en utilisant la propriété pan en remplacement de volume. Les valeurs à utiliser vont de -1 (Gauche) à 1 (Droite). Afficher le temps écoulé sous la forme 00:00:00 Vous aurez parfois besoin d'afficher le temps qui s'écoule lors de l'écoute d'une musique ou une chanson. Commencez par placer sur la scène de votre animation, un texte dynamique, nommez cette occurrence "affichagetemps". Utilisez alors le code ci-dessous : var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; var tempsecoule:number; var heures:*; 16 / 22

var minutes:*; var secondes:*; ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.mouseenabled = false; piste1.addeventlistener(event.sound_complete,ecoutesonterminee); boutonlecture.addeventlistener(event.enter_frame,affichertemps); function ecoutesonterminee(evt:event) { boutonlecture.mouseenabled = true; 17 / 22

boutonlecture.removeeventlistener(event.enter_frame,affichertemps); function affichertemps(evt:event) { tempsecoule = piste1.position/1000; heures = Math.floor(tempsEcoule/3600); minutes = Math.floor(tempsEcoule/60); secondes = Math.floor(tempsEcoule%60); heures= heures<=9? "0"+heures : heures; minutes= minutes<=9? "0"+minutes : minutes; secondes= secondes<=9? "0"+secondes : secondes; affichagetemps.text = heures+":"+minutes+":"+secondes; 18 / 22

[Télécharger le.fla] Nous utilisons la propriété position de la classe SoundChannel qui nous renvoie le nombre de millisecondes à laquelle se trouve la tête de lecture. Nous utilisons également un gestionnaire d'évènement de type Event.ENTER_FRAME pour pouvoir exécuter une action en continue. Pour finir, nous devons calculer le temps écoulé en secondes et minutes (nous avons également prévu les heures dans notre exemple). Comme vous le montre cet exemple, vous devez penser à supprimer l'écouteur qui gère l'évènement Event.ENTER_FRAME. Réaliser une jauge qui indique le pourcentage de lecture Si vous n'avez pas encore consulté de développement précédent, faites le avant de poursuivre la lecture sur le script qui permet d'afficher une jauge de lecture. Pour réaliser cette dernière, nous nous sommes basés sur le même code, mais nous avons fait référence en plus à la propriété length de la classe Sound(). Il est à noter que vous ne pouvez pas avoir une information complète sur la durée d'un son tant qu'il n'est pas chargé complètement. var ecoute:sound = new Sound(); var adressefichierson:urlrequest = new URLRequest("Piano1.mp3"); var piste1:soundchannel; 19 / 22

ecoute.load(adressefichierson); boutonlecture.addeventlistener(mouseevent.mouse_down,lireson); function lireson(evt:mouseevent) { piste1 = ecoute.play(); boutonlecture.mouseenabled = false; piste1.addeventlistener(event.sound_complete,ecoutesonterminee); boutonlecture.addeventlistener(event.enter_frame,animerjauge); function ecoutesonterminee(evt:event) { boutonlecture.mouseenabled = true; boutonlecture.removeeventlistener(event.enter_frame,animerjauge); 20 / 22

function animerjauge(evt:event) { if (piste1.position/ecoute.length>0) { jaugeprogression.scalex = piste1.position/ecoute.length; [Télécharger le.fla] Voilà, nous avons abordé toutes les notions élémentaires pour une bonne maîtrise du son dans une animation Flash, il ne vous reste plus qu'essayer de combiner le tout pour réaliser un "player MP3". Si vous savez déjà gérer le XML et le chargement d'une image en AS3, voici un exemple de player qui gère toutes les fonctionnalités que nous avons abordées. Consultez éventuellement les ressources liées au chargement d'une image et la gestion du XML dans Flash pour mieux comprendre cette animation. 21 / 22

[Télécharger le.fla] 22 / 22