SlideShare une entreprise Scribd logo
1  sur  44
Controlar sonido conControlar sonido con
ActionScriptActionScript
Unidad 9Unidad 9
ObjetivosObjetivos
 Crear instancias de las clases Sound,Crear instancias de las clases Sound,
SoundChannel y SoundTransform.SoundChannel y SoundTransform.
 Control de la carga y ejecución de unControl de la carga y ejecución de un
archivo MP3 externo.archivo MP3 externo.
 Uso de la clase SoundTransform paraUso de la clase SoundTransform para
controlar el volumen y balance (paneo) decontrolar el volumen y balance (paneo) de
sonidossonidos
 Uso de un componente deslizador (Slider)Uso de un componente deslizador (Slider)
para controlar los valores de la clasepara controlar los valores de la clase
SoundTransform.SoundTransform.
ObjetivosObjetivos
 Uso de un arreglo para almacenar la listaUso de un arreglo para almacenar la lista
de reproducción de los archivo MP3s.de reproducción de los archivo MP3s.
 Uso de los métodos de la clase TextFieldUso de los métodos de la clase TextField
para añadir y remover los caracteres depara añadir y remover los caracteres de
una variable cadena.una variable cadena.
 Uso de las etiquetas ID3 de los archivosUso de las etiquetas ID3 de los archivos
MP3s para accesar información sobre elMP3s para accesar información sobre el
archivoarchivo
Añadir deslizadoresAñadir deslizadores
(Sliders) al proyecto(Sliders) al proyecto
Unidad 9Unidad 9
Añadir deslizadores (Sliders) alAñadir deslizadores (Sliders) al
proyectoproyecto
 Los deslizadores son componentes deLos deslizadores son componentes de
interfase de usuario (UI) que nosinterfase de usuario (UI) que nos
regresarán un número dentro de unregresarán un número dentro de un
rango.rango.
 El parámetroEl parámetro snapIntervalsnapInterval nos regresa losnos regresa los
valores en el rango que le indiquemos.valores en el rango que le indiquemos.
 El parámetroEl parámetro tickIntervaltickInterval determina lasdetermina las
líneas que se dibujan en la parte superiorlíneas que se dibujan en la parte superior
del deslizador.del deslizador.
Añadir deslizadores (Sliders) alAñadir deslizadores (Sliders) al
proyectoproyecto
 Los parámetrosLos parámetros maximummaximum yy minimumminimum
determina los números máximos ydetermina los números máximos y
mínimos del rago, respectivamente.mínimos del rago, respectivamente.
 El valor del parámetroEl valor del parámetro valuevalue determina eldetermina el
valor por omisión y por tanto, la posiciónvalor por omisión y por tanto, la posición
del indicador del deslizador.del indicador del deslizador.
Las clases Sound,Las clases Sound,
SoundChannel ySoundChannel y
SoundTransformSoundTransform
Unidad 9Unidad 9
Las clases de sonidoLas clases de sonido
 Los sonidos en AS3.0 se dividen en 4 clases:Los sonidos en AS3.0 se dividen en 4 clases:
– SoundSound: Sirve para cargar el archivo externo y: Sirve para cargar el archivo externo y
reproducirlo.reproducirlo.
– SoundChannelSoundChannel: Esta clase sirve para administrar: Esta clase sirve para administrar
los canales (hasta 16) y recibe la clase para controlarlos canales (hasta 16) y recibe la clase para controlar
el volumen y el balance de los mismos. Cada objetoel volumen y el balance de los mismos. Cada objeto
SoundChannel es controlado individualmente.SoundChannel es controlado individualmente.
– SoundTransformSoundTransform : Nos sirve para controlar el: Nos sirve para controlar el
volumen y el balance (paneo) del sonido.volumen y el balance (paneo) del sonido.
– SoundMixerSoundMixer: (No se ve en este ejercicio) funciona: (No se ve en este ejercicio) funciona
para mezclar los sonidos de cada uno de los objetospara mezclar los sonidos de cada uno de los objetos
SounChannel.SounChannel.
Las clases de sonidoLas clases de sonido
 Los pasos para cargar y ejecutar un sonido deLos pasos para cargar y ejecutar un sonido de
un archivo externo son:un archivo externo son:
– Crear los objetos de sonido (Sound, SoundChannel yCrear los objetos de sonido (Sound, SoundChannel y
SoundTransform).SoundTransform).
– Cargar el archivo externo mediante el objeto Sound.Cargar el archivo externo mediante el objeto Sound.
– Modificar los parámetros de volumen y paneo en elModificar los parámetros de volumen y paneo en el
objeto SoundTransform.objeto SoundTransform.
– Ejecutar el sondo desde el objeto SoundChannelEjecutar el sondo desde el objeto SoundChannel
– Asociar el objeto de transformación al objetoAsociar el objeto de transformación al objeto
SoundChannelSoundChannel
Las clases de sonidoLas clases de sonido
 Nota: Como cortesía al usuario, siempre hayNota: Como cortesía al usuario, siempre hay
que mantener el sonido al 50% del volumen. Sique mantener el sonido al 50% del volumen. Si
lo mantiene en 100% podría resultar incómodolo mantiene en 100% podría resultar incómodo
para el usuario de su aplicación.para el usuario de su aplicación.
 Si programa en la línea de tiempo, no esSi programa en la línea de tiempo, no es
necesario importar las clases de sonido, ya quenecesario importar las clases de sonido, ya que
se encuentran en el paquete “flash”se encuentran en el paquete “flash”
 Si programa OOPs, deberá importar las clases:Si programa OOPs, deberá importar las clases:
import flash.media.Sound;import flash.media.Sound;
Desplegar los títulosDesplegar los títulos
mediante un ciclomediante un ciclo
Unidad 9Unidad 9
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Para poder desplegar los títulos de lasPara poder desplegar los títulos de las
canciones en los botones, tenemos quecanciones en los botones, tenemos que
acceder a los campos de texto dentro deacceder a los campos de texto dentro de
cada uno de los botones.cada uno de los botones.
 A esta práctica común en Flash, deA esta práctica común en Flash, de
introducir un objeto dentro de otrointroducir un objeto dentro de otro
(anidación) lo conocemos como(anidación) lo conocemos como
““targetingtargeting””
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 En este caso, deseamos introducir a la caja deEn este caso, deseamos introducir a la caja de
texto “title”, que se encuentra dentro de cadatexto “title”, que se encuentra dentro de cada
uno de los botones, el nombre de la canción.uno de los botones, el nombre de la canción.
 Para ello podemos acceder a la caja mediante laPara ello podemos acceder a la caja mediante la
siguiente instrucción:siguiente instrucción:
this.song1.title.text = “NombreCancion”;this.song1.title.text = “NombreCancion”;
 Observe que el proceso para acceder aObserve que el proceso para acceder a
recursos en Flash, es parecido a manejarrecursos en Flash, es parecido a manejar
carpetas en el sistema operativo, sólo que encarpetas en el sistema operativo, sólo que en
lugar de diagonales (“/”) utilizamos puntos.lugar de diagonales (“/”) utilizamos puntos.
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Podríamos repetir esta sentencia paraPodríamos repetir esta sentencia para
cada uno de los 6 botones de la siguientecada uno de los 6 botones de la siguiente
forma:forma:
this.song1.title.text = “NombreCancion1”;this.song1.title.text = “NombreCancion1”;
this.song2.title.text = “NombreCancion2”;this.song2.title.text = “NombreCancion2”;
this.song3.title.text = “NombreCancion3”;this.song3.title.text = “NombreCancion3”;
this.song4.title.text = “NombreCancion4”;this.song4.title.text = “NombreCancion4”;
this.song5.title.text = “NombreCancion5”;this.song5.title.text = “NombreCancion5”;
this.song6.title.text = “NombreCancion6”;this.song6.title.text = “NombreCancion6”;
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Ahora suponga que tiene 100 botones. LaAhora suponga que tiene 100 botones. La
forma anterior no sería práctica.forma anterior no sería práctica.
 Una mejor práctica es utilizar un cicloUna mejor práctica es utilizar un ciclo forfor
para llenar cada uno de los botones.para llenar cada uno de los botones.
 Para ello debemos utilizar la propiedadPara ello debemos utilizar la propiedad
lengthlength de la clase Array, la cual regresa elde la clase Array, la cual regresa el
número de elementos de un arreglo.número de elementos de un arreglo.
 Recuerde que los arreglos siempre inicianRecuerde que los arreglos siempre inician
del índice 0 (cero).del índice 0 (cero).
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Otro punto fundamental es hacerOtro punto fundamental es hacer
referencia a los objetos en formareferencia a los objetos en forma
dinámica.dinámica.
 Si coloca una cadena como referencia,Si coloca una cadena como referencia,
ActionScript le mandará un mensaje deActionScript le mandará un mensaje de
error:error:
““song”+i = songList[i];song”+i = songList[i];
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Para ello hay que evaluar en formaPara ello hay que evaluar en forma
dinámica la cadena o variable condinámica la cadena o variable con
corchetes, por ejemplo:corchetes, por ejemplo:
this[“song”+i].title.text = songList[i];this[“song”+i].title.text = songList[i];
 Esta expresión la toma el compilador y laEsta expresión la toma el compilador y la
interpreta como (que es lo queinterpreta como (que es lo que
buscamos):buscamos):
song1.title.text = songList[i];song1.title.text = songList[i];
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Finalmente el ciclo quedará de laFinalmente el ciclo quedará de la
siguiente forma:siguiente forma:
for(var i=0; i<songList.length; i++){for(var i=0; i<songList.length; i++){
this[“song”+i].title.text = songList[i];this[“song”+i].title.text = songList[i];
}}
 En el ejemplo anterior, se generaría elEn el ejemplo anterior, se generaría el
objetoobjeto song0song0, el cual no existe y el, el cual no existe y el
compilador nos enviaría un mensaje decompilador nos enviaría un mensaje de
error.error.
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Para solucionar este problema, debemosPara solucionar este problema, debemos
sumarle 1 (uno) al índicesumarle 1 (uno) al índice ii..
 Si lo hiciéramos directamente, noSi lo hiciéramos directamente, no
conseguiríamos lo que deseamos:conseguiríamos lo que deseamos:
trace(“song”+i+1); // song01trace(“song”+i+1); // song01
 Para ello debemos dePara ello debemos de agruparagrupar la suma parala suma para
cambiar lacambiar la precedenciaprecedencia..
 Los paréntesis nos servirán para cambiar laLos paréntesis nos servirán para cambiar la
precedencia, es decir, el orden en que seprecedencia, es decir, el orden en que se
efectúan las operaciones.efectúan las operaciones.
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Para cambiar la precedencia de laPara cambiar la precedencia de la
expresión anterior, se podría escribirexpresión anterior, se podría escribir
(suponiendo que i=0):(suponiendo que i=0):
trace(“song”+(i+1)); //song1trace(“song”+(i+1)); //song1
 Las instrucciones para desplegar losLas instrucciones para desplegar los
títulos de las canciones en los botonestítulos de las canciones en los botones
quedaría de la siguiente forma:quedaría de la siguiente forma:
for(var i=0; i<songList.length; i++){for(var i=0; i<songList.length; i++){
this[“song”+(i+1)].title.text = songList[i];this[“song”+(i+1)].title.text = songList[i];
}}
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 El resultado es que las canciones seEl resultado es que las canciones se
despliegan con el nombre del archivodespliegan con el nombre del archivo
másmás la extensión mp3.la extensión mp3.
 Para quitar la extensión de los botones laPara quitar la extensión de los botones la
eliminaremos con el métodoeliminaremos con el método replace()replace()
(nuevo en AS3.0).(nuevo en AS3.0).
 El métodoEl método replacereplace cambia busca unacambia busca una
subcadena y si la encuentra, la cambiasubcadena y si la encuentra, la cambia
por otra.por otra.
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Por ejemplo:Por ejemplo:
var cadena:String = “foto.jpg”;var cadena:String = “foto.jpg”;
cadena = cadena.replace(“jpg”, “gif”);cadena = cadena.replace(“jpg”, “gif”);
trace(cadena); //foto.giftrace(cadena); //foto.gif
 Si desea eliminar una subcadena,Si desea eliminar una subcadena,
sustitúyala por una cadena vacía:sustitúyala por una cadena vacía:
var cadena:String = “foto.jpg”;var cadena:String = “foto.jpg”;
cadena = cadena.replace(“.jpg”, “”);cadena = cadena.replace(“.jpg”, “”);
trace(cadena); //fototrace(cadena); //foto
Desplegar los títulos mediante unDesplegar los títulos mediante un
ciclociclo
 Por último de esta sección, es una buenaPor último de esta sección, es una buena
práctica quitar de las manos del usuariopráctica quitar de las manos del usuario
todo aquello que pudiera causar algúntodo aquello que pudiera causar algún
problema si aún no esta listo, por lo queproblema si aún no esta listo, por lo que
quitaremos la visibilidad de losquitaremos la visibilidad de los
deslizadores hasta que el usuario hayadeslizadores hasta que el usuario haya
seleccionado una canción:seleccionado una canción:
panSlide.visible = false;panSlide.visible = false;
volSlide.visible = false;volSlide.visible = false;
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
Unidad 9Unidad 9
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Para cada uno de los botones, debemos crearPara cada uno de los botones, debemos crear
un detector de eventos que lance la canciónun detector de eventos que lance la canción
seleccionada.seleccionada.
 Lo anterior lo podemos hacer de forma dinámicaLo anterior lo podemos hacer de forma dinámica
o escribir uno escribir un listenerlistener para cada uno.para cada uno.
 Una ves realizada la selección, debemosUna ves realizada la selección, debemos
determinar cuál canción fue seleccionada.determinar cuál canción fue seleccionada.
 Esa información la tendremos en elEsa información la tendremos en el eventObjecteventObject,,
en la propiedaden la propiedad currentTargetcurrentTarget..name.name.
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Para seleccionar cada una de las cancionesPara seleccionar cada una de las canciones
podemos utilizar 6 estructuras condicionespodemos utilizar 6 estructuras condiciones if()if(), u, u
optar por una estructuraoptar por una estructura switch()switch()..
 Como se vio en el capítulo 8, p165, la estructuraComo se vio en el capítulo 8, p165, la estructura
switch() crea una estructura ramificada paraswitch() crea una estructura ramificada para
sentencias de ActionScript.sentencias de ActionScript.
 Al igual que la sentencia if, la sentenciaAl igual que la sentencia if, la sentencia switchswitch
prueba una condición y ejecuta sentencias si laprueba una condición y ejecuta sentencias si la
condición devuelve un valorcondición devuelve un valor truetrue..
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Todas las sentenciasTodas las sentencias switchswitch deberíandeberían
incluir un caso predeterminado.incluir un caso predeterminado.
 El caso predeterminado debería incluirEl caso predeterminado debería incluir
una sentenciauna sentencia breakbreak para evitar un errorpara evitar un error
de paso al siguiente caso si se añadede paso al siguiente caso si se añade
posteriormente otro caso. Cuando se pasaposteriormente otro caso. Cuando se pasa
al siguiente caso, no se incluye unaal siguiente caso, no se incluye una
sentenciasentencia breakbreak..
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Una práctica común en la programaciónUna práctica común en la programación
orientada a objetos (oop) es determinar siorientada a objetos (oop) es determinar si
un objeto existe o no, pues el volverlo aun objeto existe o no, pues el volverlo a
crear nos marcaría un mensaje de error.crear nos marcaría un mensaje de error.
 En este caso, necesitamos verificar si elEn este caso, necesitamos verificar si el
objeto existe para detener la canciónobjeto existe para detener la canción
previa.previa.
 Los objetos que aún no están definidos,Los objetos que aún no están definidos,
tienen un valor predeterminado detienen un valor predeterminado de nullnull..
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Para ello, necesitamos determinar si elPara ello, necesitamos determinar si el
objeto existe antes de detener el sonido.objeto existe antes de detener el sonido.
 Si no existe y lo queremos detener, elSi no existe y lo queremos detener, el
compilador nos enviará un mensaje decompilador nos enviará un mensaje de
error. La sentencia para ello es:error. La sentencia para ello es:
if(snd != null){if(snd != null){
channel.stop();channel.stop();
}}
Programar los botones paraProgramar los botones para
seleccionar una canciónseleccionar una canción
 Para cargar un archivo externoPara cargar un archivo externo
necesitamos crear un objeto URLRequest.necesitamos crear un objeto URLRequest.
 En esta rutina crearemos las instancias deEn esta rutina crearemos las instancias de
los objetos y ejecutaremos el sonido:los objetos y ejecutaremos el sonido:
channel = snd.play();channel = snd.play();
 Asignamos el objeto de transformaciónAsignamos el objeto de transformación
para manejar volumen y sonido:para manejar volumen y sonido:
channel.soundTransform = trans;channel.soundTransform = trans;
Controlar la visibilidad delControlar la visibilidad del
volumen y del balance devolumen y del balance de
los sonidoslos sonidos
Unidad 9Unidad 9
Controlar la visibilidad del volumenControlar la visibilidad del volumen
y del balance de los sonidosy del balance de los sonidos
 Una ves que el usuario ha seleccionado elUna ves que el usuario ha seleccionado el
botón, hacemos visibles los deslizadoresbotón, hacemos visibles los deslizadores
cambiando la propiedadcambiando la propiedad visiblevisible aa
verdadero.verdadero.
 También desplegaremos el valor delTambién desplegaremos el valor del
paneo y del volumen, para ellopaneo y del volumen, para ello
multiplicaremos la fracción por 100.multiplicaremos la fracción por 100.
Controlar la visibilidad del volumenControlar la visibilidad del volumen
y del balance de los sonidosy del balance de los sonidos
 Para redondear los decimales, podemosPara redondear los decimales, podemos
utilizar la función int() o los métodosutilizar la función int() o los métodos
Math.round() (redondea de .5 paraMath.round() (redondea de .5 para
arriba) , Math.floor() (trunca siemprearriba) , Math.floor() (trunca siempre
abajo) o Math.ceil() (Redondea siempreabajo) o Math.ceil() (Redondea siempre
para arriba).para arriba).
Añadir unAñadir un listenerlistener parapara
detectar las etiquetas de losdetectar las etiquetas de los
archivo MP3sarchivo MP3s
Unidad 9Unidad 9
Añadir unAñadir un listenerlistener para detectar laspara detectar las
etiquetas de los archivo MP3setiquetas de los archivo MP3s
 Los archivos MP3 pueden ser codificadosLos archivos MP3 pueden ser codificados
con etiquetas (cadenas) que contengancon etiquetas (cadenas) que contengan
información sobre sus contenidos.información sobre sus contenidos.
 El formato de etiquetas MP3 que aceptaEl formato de etiquetas MP3 que acepta
Flash es el ID3.Flash es el ID3.
 Por ejemplo, un archivo MP3 puedePor ejemplo, un archivo MP3 puede
contener el nombre de la canción, sucontener el nombre de la canción, su
autor, el nombre del album, el número deautor, el nombre del album, el número de
pista, etc.pista, etc.
Añadir unAñadir un listenerlistener para detectar laspara detectar las
etiquetas de los archivo MP3setiquetas de los archivo MP3s
 Flash puede detectar si el archivo deFlash puede detectar si el archivo de
sonido tiene dichas etiquetas, y envía unsonido tiene dichas etiquetas, y envía un
evento si es el caso.evento si es el caso.
 Podemos verificar si las etiquetas sePodemos verificar si las etiquetas se
encuentran vacías o contienenencuentran vacías o contienen
información por medio del valorinformación por medio del valor nullnull..
 Vaciaremos la información en la caja deVaciaremos la información en la caja de
textotexto infoinfo..
Añadir unAñadir un listenerlistener para detectar laspara detectar las
etiquetas de los archivo MP3setiquetas de los archivo MP3s
 Para añadir texto a una cadena que yaPara añadir texto a una cadena que ya
existe, debemos utilizar el métodoexiste, debemos utilizar el método
appendText(), exclusivo de AS 3.0.appendText(), exclusivo de AS 3.0.
Añadir un objeto deAñadir un objeto de
formateo de textoformateo de texto
Unidad 9Unidad 9
Añadir un objeto de formateo deAñadir un objeto de formateo de
textotexto
 Para poder darle formato a un texto, sePara poder darle formato a un texto, se
puede crear el objeto de la clasepuede crear el objeto de la clase
TextFormat.TextFormat.
 Dentro de este, se puede darle un valor alDentro de este, se puede darle un valor al
parámetroparámetro urlurl para hacer un hipertexto.para hacer un hipertexto.
Añadir los controles aAñadir los controles a
los deslizadoreslos deslizadores
Unidad 9Unidad 9
Añadir los controles a losAñadir los controles a los
deslizadoresdeslizadores
 Por último activaremos los deslizadoresPor último activaremos los deslizadores
por medio de detectores de eventospor medio de detectores de eventos
(listeners).(listeners).
 El evento CHANGE se encuentra en laEl evento CHANGE se encuentra en la
clase SliderEvent, la cual fue importada alclase SliderEvent, la cual fue importada al
inicio del ejercicio.inicio del ejercicio.
 Los nuevos datos los cargaremos en elLos nuevos datos los cargaremos en el
objeto de transformación y lo asignaremosobjeto de transformación y lo asignaremos
al canal de sonido (SoundChannel).al canal de sonido (SoundChannel).
Preguntas de revisiónPreguntas de revisión
Unidad 9Unidad 9
Preguntas de revisiónPreguntas de revisión
 ¿Con cuál de las tres clases de ActionScript¿Con cuál de las tres clases de ActionScript
usted puede cargar, ejecutar y controlar unusted puede cargar, ejecutar y controlar un
archivo externo de sonido?archivo externo de sonido?
 ¿Cuáles son las dos propiedades de un¿Cuáles son las dos propiedades de un
archivo de sonido que usted puede controlararchivo de sonido que usted puede controlar
con la clasecon la clase SoundTransformSoundTransform??
 ¿Cuál es el método de la clase¿Cuál es el método de la clase TextFieldTextField queque
sirve para remplazar texto en una cadena?sirve para remplazar texto en una cadena?
Preguntas de revisiónPreguntas de revisión
 ¿Cuál es el método para añadir texto a¿Cuál es el método para añadir texto a
una cadena ya existente?una cadena ya existente?
 ¿Cuál es el evento de la clase¿Cuál es el evento de la clase SoundSound
que responde cuando se detectanque responde cuando se detectan
etiquetas ID3 de un archivo de sonidoetiquetas ID3 de un archivo de sonido
tipotipo MP3sMP3s??

Contenu connexe

Tendances (19)

Unidad'5..
Unidad'5..Unidad'5..
Unidad'5..
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audio
 
Analisis espectral en MATLAB
Analisis espectral en MATLABAnalisis espectral en MATLAB
Analisis espectral en MATLAB
 
Practica de audacity escalas y generar ondas basicas, aplicar efectos
Practica de audacity escalas y generar ondas basicas, aplicar efectosPractica de audacity escalas y generar ondas basicas, aplicar efectos
Practica de audacity escalas y generar ondas basicas, aplicar efectos
 
Ejercicios Aud
Ejercicios AudEjercicios Aud
Ejercicios Aud
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Actividades 1 a 7
Actividades 1 a 7Actividades 1 a 7
Actividades 1 a 7
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Tutorial Audacity
Tutorial AudacityTutorial Audacity
Tutorial Audacity
 
Analisis espectral
Analisis espectralAnalisis espectral
Analisis espectral
 
Analisis Espectral Usando Matlab
Analisis Espectral Usando MatlabAnalisis Espectral Usando Matlab
Analisis Espectral Usando Matlab
 
Analisis espectral
Analisis espectralAnalisis espectral
Analisis espectral
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Audacity avanzado
Audacity avanzadoAudacity avanzado
Audacity avanzado
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 

Similaire à As3 unidad 9 controlar sonido con action script

Similaire à As3 unidad 9 controlar sonido con action script (20)

As3 unidad 1 navegar en la línea de tiempo
As3 unidad 1 navegar en la línea de tiempoAs3 unidad 1 navegar en la línea de tiempo
As3 unidad 1 navegar en la línea de tiempo
 
Clase 1 - Python
Clase 1 - PythonClase 1 - Python
Clase 1 - Python
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
As3 unidad 2 eventos y funciones
As3 unidad 2 eventos y funcionesAs3 unidad 2 eventos y funciones
As3 unidad 2 eventos y funciones
 
As3 unidad 7 arrelos y ciclos
As3 unidad 7 arrelos y ciclosAs3 unidad 7 arrelos y ciclos
As3 unidad 7 arrelos y ciclos
 
Thalia castro 1101
Thalia castro 1101Thalia castro 1101
Thalia castro 1101
 
Clase Sonido
Clase SonidoClase Sonido
Clase Sonido
 
Introducción a shell script
Introducción a shell scriptIntroducción a shell script
Introducción a shell script
 
Librerias dee c_
Librerias dee c_Librerias dee c_
Librerias dee c_
 
Librerias dee c_ (1)
Librerias dee c_ (1)Librerias dee c_ (1)
Librerias dee c_ (1)
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 
Librerias de c_
Librerias de c_Librerias de c_
Librerias de c_
 
Cuestionario flash
Cuestionario flash  Cuestionario flash
Cuestionario flash
 
Aprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación PythonAprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación Python
 
Arena
ArenaArena
Arena
 
Cuaderno visual basic
Cuaderno visual basicCuaderno visual basic
Cuaderno visual basic
 
Cuaderno visual basic
Cuaderno visual basicCuaderno visual basic
Cuaderno visual basic
 
Cuaderno visual basic
Cuaderno visual basicCuaderno visual basic
Cuaderno visual basic
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Action script 3
Action script 3Action script 3
Action script 3
 

Plus de Francisco Javier Arce Anguiano

Plus de Francisco Javier Arce Anguiano (20)

El nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización IntlEl nuevo objeto para internacionalización y localización Intl
El nuevo objeto para internacionalización y localización Intl
 
El nuevo tipo de datos "símbolo" o "symbol"
El nuevo tipo de datos "símbolo" o "symbol"El nuevo tipo de datos "símbolo" o "symbol"
El nuevo tipo de datos "símbolo" o "symbol"
 
Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6Nuevas características de los objetos en JavaScript ES6
Nuevas características de los objetos en JavaScript ES6
 
Nuevos Métodos en ES6
Nuevos Métodos en ES6Nuevos Métodos en ES6
Nuevos Métodos en ES6
 
Objetos de propagación o ...spread
Objetos de propagación o ...spreadObjetos de propagación o ...spread
Objetos de propagación o ...spread
 
Mejoras en las expresiones regulares
Mejoras en las expresiones regularesMejoras en las expresiones regulares
Mejoras en las expresiones regulares
 
Valores por default en argumentos
Valores por default en argumentosValores por default en argumentos
Valores por default en argumentos
 
Literales octales y binarias:
Literales octales y binarias: Literales octales y binarias:
Literales octales y binarias:
 
La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6
 
HTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation LanguageHTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation Language
 
HTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregadoHTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregado
 
WebSQl DataBase HTML5-dql - data query language
WebSQl DataBase HTML5-dql - data query languageWebSQl DataBase HTML5-dql - data query language
WebSQl DataBase HTML5-dql - data query language
 
Las etiquetas estructurales en html5
Las etiquetas estructurales en html5Las etiquetas estructurales en html5
Las etiquetas estructurales en html5
 
Los metadatos de HTML5
Los metadatos de HTML5Los metadatos de HTML5
Los metadatos de HTML5
 
El doctype de HTML5
El doctype de HTML5El doctype de HTML5
El doctype de HTML5
 
Historia de HTML5
Historia de HTML5Historia de HTML5
Historia de HTML5
 
SQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query languageSQLite y PHP: DQL - data query language
SQLite y PHP: DQL - data query language
 
Introducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHPIntroducción a SQLite 3 y PHP
Introducción a SQLite 3 y PHP
 
Crear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOSCrear el perfil provisional para desarrollar aplicaciones iOS
Crear el perfil provisional para desarrollar aplicaciones iOS
 
Identificar el dispositivo para desarrollar en iOS
Identificar el dispositivo para desarrollar en iOSIdentificar el dispositivo para desarrollar en iOS
Identificar el dispositivo para desarrollar en iOS
 

Dernier

5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
MiNeyi1
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
JonathanCovena1
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Dernier (20)

SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 

As3 unidad 9 controlar sonido con action script

  • 1. Controlar sonido conControlar sonido con ActionScriptActionScript Unidad 9Unidad 9
  • 2. ObjetivosObjetivos  Crear instancias de las clases Sound,Crear instancias de las clases Sound, SoundChannel y SoundTransform.SoundChannel y SoundTransform.  Control de la carga y ejecución de unControl de la carga y ejecución de un archivo MP3 externo.archivo MP3 externo.  Uso de la clase SoundTransform paraUso de la clase SoundTransform para controlar el volumen y balance (paneo) decontrolar el volumen y balance (paneo) de sonidossonidos  Uso de un componente deslizador (Slider)Uso de un componente deslizador (Slider) para controlar los valores de la clasepara controlar los valores de la clase SoundTransform.SoundTransform.
  • 3. ObjetivosObjetivos  Uso de un arreglo para almacenar la listaUso de un arreglo para almacenar la lista de reproducción de los archivo MP3s.de reproducción de los archivo MP3s.  Uso de los métodos de la clase TextFieldUso de los métodos de la clase TextField para añadir y remover los caracteres depara añadir y remover los caracteres de una variable cadena.una variable cadena.  Uso de las etiquetas ID3 de los archivosUso de las etiquetas ID3 de los archivos MP3s para accesar información sobre elMP3s para accesar información sobre el archivoarchivo
  • 4. Añadir deslizadoresAñadir deslizadores (Sliders) al proyecto(Sliders) al proyecto Unidad 9Unidad 9
  • 5. Añadir deslizadores (Sliders) alAñadir deslizadores (Sliders) al proyectoproyecto  Los deslizadores son componentes deLos deslizadores son componentes de interfase de usuario (UI) que nosinterfase de usuario (UI) que nos regresarán un número dentro de unregresarán un número dentro de un rango.rango.  El parámetroEl parámetro snapIntervalsnapInterval nos regresa losnos regresa los valores en el rango que le indiquemos.valores en el rango que le indiquemos.  El parámetroEl parámetro tickIntervaltickInterval determina lasdetermina las líneas que se dibujan en la parte superiorlíneas que se dibujan en la parte superior del deslizador.del deslizador.
  • 6. Añadir deslizadores (Sliders) alAñadir deslizadores (Sliders) al proyectoproyecto  Los parámetrosLos parámetros maximummaximum yy minimumminimum determina los números máximos ydetermina los números máximos y mínimos del rago, respectivamente.mínimos del rago, respectivamente.  El valor del parámetroEl valor del parámetro valuevalue determina eldetermina el valor por omisión y por tanto, la posiciónvalor por omisión y por tanto, la posición del indicador del deslizador.del indicador del deslizador.
  • 7. Las clases Sound,Las clases Sound, SoundChannel ySoundChannel y SoundTransformSoundTransform Unidad 9Unidad 9
  • 8. Las clases de sonidoLas clases de sonido  Los sonidos en AS3.0 se dividen en 4 clases:Los sonidos en AS3.0 se dividen en 4 clases: – SoundSound: Sirve para cargar el archivo externo y: Sirve para cargar el archivo externo y reproducirlo.reproducirlo. – SoundChannelSoundChannel: Esta clase sirve para administrar: Esta clase sirve para administrar los canales (hasta 16) y recibe la clase para controlarlos canales (hasta 16) y recibe la clase para controlar el volumen y el balance de los mismos. Cada objetoel volumen y el balance de los mismos. Cada objeto SoundChannel es controlado individualmente.SoundChannel es controlado individualmente. – SoundTransformSoundTransform : Nos sirve para controlar el: Nos sirve para controlar el volumen y el balance (paneo) del sonido.volumen y el balance (paneo) del sonido. – SoundMixerSoundMixer: (No se ve en este ejercicio) funciona: (No se ve en este ejercicio) funciona para mezclar los sonidos de cada uno de los objetospara mezclar los sonidos de cada uno de los objetos SounChannel.SounChannel.
  • 9. Las clases de sonidoLas clases de sonido  Los pasos para cargar y ejecutar un sonido deLos pasos para cargar y ejecutar un sonido de un archivo externo son:un archivo externo son: – Crear los objetos de sonido (Sound, SoundChannel yCrear los objetos de sonido (Sound, SoundChannel y SoundTransform).SoundTransform). – Cargar el archivo externo mediante el objeto Sound.Cargar el archivo externo mediante el objeto Sound. – Modificar los parámetros de volumen y paneo en elModificar los parámetros de volumen y paneo en el objeto SoundTransform.objeto SoundTransform. – Ejecutar el sondo desde el objeto SoundChannelEjecutar el sondo desde el objeto SoundChannel – Asociar el objeto de transformación al objetoAsociar el objeto de transformación al objeto SoundChannelSoundChannel
  • 10. Las clases de sonidoLas clases de sonido  Nota: Como cortesía al usuario, siempre hayNota: Como cortesía al usuario, siempre hay que mantener el sonido al 50% del volumen. Sique mantener el sonido al 50% del volumen. Si lo mantiene en 100% podría resultar incómodolo mantiene en 100% podría resultar incómodo para el usuario de su aplicación.para el usuario de su aplicación.  Si programa en la línea de tiempo, no esSi programa en la línea de tiempo, no es necesario importar las clases de sonido, ya quenecesario importar las clases de sonido, ya que se encuentran en el paquete “flash”se encuentran en el paquete “flash”  Si programa OOPs, deberá importar las clases:Si programa OOPs, deberá importar las clases: import flash.media.Sound;import flash.media.Sound;
  • 11. Desplegar los títulosDesplegar los títulos mediante un ciclomediante un ciclo Unidad 9Unidad 9
  • 12. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Para poder desplegar los títulos de lasPara poder desplegar los títulos de las canciones en los botones, tenemos quecanciones en los botones, tenemos que acceder a los campos de texto dentro deacceder a los campos de texto dentro de cada uno de los botones.cada uno de los botones.  A esta práctica común en Flash, deA esta práctica común en Flash, de introducir un objeto dentro de otrointroducir un objeto dentro de otro (anidación) lo conocemos como(anidación) lo conocemos como ““targetingtargeting””
  • 13. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  En este caso, deseamos introducir a la caja deEn este caso, deseamos introducir a la caja de texto “title”, que se encuentra dentro de cadatexto “title”, que se encuentra dentro de cada uno de los botones, el nombre de la canción.uno de los botones, el nombre de la canción.  Para ello podemos acceder a la caja mediante laPara ello podemos acceder a la caja mediante la siguiente instrucción:siguiente instrucción: this.song1.title.text = “NombreCancion”;this.song1.title.text = “NombreCancion”;  Observe que el proceso para acceder aObserve que el proceso para acceder a recursos en Flash, es parecido a manejarrecursos en Flash, es parecido a manejar carpetas en el sistema operativo, sólo que encarpetas en el sistema operativo, sólo que en lugar de diagonales (“/”) utilizamos puntos.lugar de diagonales (“/”) utilizamos puntos.
  • 14. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Podríamos repetir esta sentencia paraPodríamos repetir esta sentencia para cada uno de los 6 botones de la siguientecada uno de los 6 botones de la siguiente forma:forma: this.song1.title.text = “NombreCancion1”;this.song1.title.text = “NombreCancion1”; this.song2.title.text = “NombreCancion2”;this.song2.title.text = “NombreCancion2”; this.song3.title.text = “NombreCancion3”;this.song3.title.text = “NombreCancion3”; this.song4.title.text = “NombreCancion4”;this.song4.title.text = “NombreCancion4”; this.song5.title.text = “NombreCancion5”;this.song5.title.text = “NombreCancion5”; this.song6.title.text = “NombreCancion6”;this.song6.title.text = “NombreCancion6”;
  • 15. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Ahora suponga que tiene 100 botones. LaAhora suponga que tiene 100 botones. La forma anterior no sería práctica.forma anterior no sería práctica.  Una mejor práctica es utilizar un cicloUna mejor práctica es utilizar un ciclo forfor para llenar cada uno de los botones.para llenar cada uno de los botones.  Para ello debemos utilizar la propiedadPara ello debemos utilizar la propiedad lengthlength de la clase Array, la cual regresa elde la clase Array, la cual regresa el número de elementos de un arreglo.número de elementos de un arreglo.  Recuerde que los arreglos siempre inicianRecuerde que los arreglos siempre inician del índice 0 (cero).del índice 0 (cero).
  • 16. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Otro punto fundamental es hacerOtro punto fundamental es hacer referencia a los objetos en formareferencia a los objetos en forma dinámica.dinámica.  Si coloca una cadena como referencia,Si coloca una cadena como referencia, ActionScript le mandará un mensaje deActionScript le mandará un mensaje de error:error: ““song”+i = songList[i];song”+i = songList[i];
  • 17. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Para ello hay que evaluar en formaPara ello hay que evaluar en forma dinámica la cadena o variable condinámica la cadena o variable con corchetes, por ejemplo:corchetes, por ejemplo: this[“song”+i].title.text = songList[i];this[“song”+i].title.text = songList[i];  Esta expresión la toma el compilador y laEsta expresión la toma el compilador y la interpreta como (que es lo queinterpreta como (que es lo que buscamos):buscamos): song1.title.text = songList[i];song1.title.text = songList[i];
  • 18. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Finalmente el ciclo quedará de laFinalmente el ciclo quedará de la siguiente forma:siguiente forma: for(var i=0; i<songList.length; i++){for(var i=0; i<songList.length; i++){ this[“song”+i].title.text = songList[i];this[“song”+i].title.text = songList[i]; }}  En el ejemplo anterior, se generaría elEn el ejemplo anterior, se generaría el objetoobjeto song0song0, el cual no existe y el, el cual no existe y el compilador nos enviaría un mensaje decompilador nos enviaría un mensaje de error.error.
  • 19. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Para solucionar este problema, debemosPara solucionar este problema, debemos sumarle 1 (uno) al índicesumarle 1 (uno) al índice ii..  Si lo hiciéramos directamente, noSi lo hiciéramos directamente, no conseguiríamos lo que deseamos:conseguiríamos lo que deseamos: trace(“song”+i+1); // song01trace(“song”+i+1); // song01  Para ello debemos dePara ello debemos de agruparagrupar la suma parala suma para cambiar lacambiar la precedenciaprecedencia..  Los paréntesis nos servirán para cambiar laLos paréntesis nos servirán para cambiar la precedencia, es decir, el orden en que seprecedencia, es decir, el orden en que se efectúan las operaciones.efectúan las operaciones.
  • 20. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Para cambiar la precedencia de laPara cambiar la precedencia de la expresión anterior, se podría escribirexpresión anterior, se podría escribir (suponiendo que i=0):(suponiendo que i=0): trace(“song”+(i+1)); //song1trace(“song”+(i+1)); //song1  Las instrucciones para desplegar losLas instrucciones para desplegar los títulos de las canciones en los botonestítulos de las canciones en los botones quedaría de la siguiente forma:quedaría de la siguiente forma: for(var i=0; i<songList.length; i++){for(var i=0; i<songList.length; i++){ this[“song”+(i+1)].title.text = songList[i];this[“song”+(i+1)].title.text = songList[i]; }}
  • 21. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  El resultado es que las canciones seEl resultado es que las canciones se despliegan con el nombre del archivodespliegan con el nombre del archivo másmás la extensión mp3.la extensión mp3.  Para quitar la extensión de los botones laPara quitar la extensión de los botones la eliminaremos con el métodoeliminaremos con el método replace()replace() (nuevo en AS3.0).(nuevo en AS3.0).  El métodoEl método replacereplace cambia busca unacambia busca una subcadena y si la encuentra, la cambiasubcadena y si la encuentra, la cambia por otra.por otra.
  • 22. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Por ejemplo:Por ejemplo: var cadena:String = “foto.jpg”;var cadena:String = “foto.jpg”; cadena = cadena.replace(“jpg”, “gif”);cadena = cadena.replace(“jpg”, “gif”); trace(cadena); //foto.giftrace(cadena); //foto.gif  Si desea eliminar una subcadena,Si desea eliminar una subcadena, sustitúyala por una cadena vacía:sustitúyala por una cadena vacía: var cadena:String = “foto.jpg”;var cadena:String = “foto.jpg”; cadena = cadena.replace(“.jpg”, “”);cadena = cadena.replace(“.jpg”, “”); trace(cadena); //fototrace(cadena); //foto
  • 23. Desplegar los títulos mediante unDesplegar los títulos mediante un ciclociclo  Por último de esta sección, es una buenaPor último de esta sección, es una buena práctica quitar de las manos del usuariopráctica quitar de las manos del usuario todo aquello que pudiera causar algúntodo aquello que pudiera causar algún problema si aún no esta listo, por lo queproblema si aún no esta listo, por lo que quitaremos la visibilidad de losquitaremos la visibilidad de los deslizadores hasta que el usuario hayadeslizadores hasta que el usuario haya seleccionado una canción:seleccionado una canción: panSlide.visible = false;panSlide.visible = false; volSlide.visible = false;volSlide.visible = false;
  • 24. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción Unidad 9Unidad 9
  • 25. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Para cada uno de los botones, debemos crearPara cada uno de los botones, debemos crear un detector de eventos que lance la canciónun detector de eventos que lance la canción seleccionada.seleccionada.  Lo anterior lo podemos hacer de forma dinámicaLo anterior lo podemos hacer de forma dinámica o escribir uno escribir un listenerlistener para cada uno.para cada uno.  Una ves realizada la selección, debemosUna ves realizada la selección, debemos determinar cuál canción fue seleccionada.determinar cuál canción fue seleccionada.  Esa información la tendremos en elEsa información la tendremos en el eventObjecteventObject,, en la propiedaden la propiedad currentTargetcurrentTarget..name.name.
  • 26. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Para seleccionar cada una de las cancionesPara seleccionar cada una de las canciones podemos utilizar 6 estructuras condicionespodemos utilizar 6 estructuras condiciones if()if(), u, u optar por una estructuraoptar por una estructura switch()switch()..  Como se vio en el capítulo 8, p165, la estructuraComo se vio en el capítulo 8, p165, la estructura switch() crea una estructura ramificada paraswitch() crea una estructura ramificada para sentencias de ActionScript.sentencias de ActionScript.  Al igual que la sentencia if, la sentenciaAl igual que la sentencia if, la sentencia switchswitch prueba una condición y ejecuta sentencias si laprueba una condición y ejecuta sentencias si la condición devuelve un valorcondición devuelve un valor truetrue..
  • 27. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Todas las sentenciasTodas las sentencias switchswitch deberíandeberían incluir un caso predeterminado.incluir un caso predeterminado.  El caso predeterminado debería incluirEl caso predeterminado debería incluir una sentenciauna sentencia breakbreak para evitar un errorpara evitar un error de paso al siguiente caso si se añadede paso al siguiente caso si se añade posteriormente otro caso. Cuando se pasaposteriormente otro caso. Cuando se pasa al siguiente caso, no se incluye unaal siguiente caso, no se incluye una sentenciasentencia breakbreak..
  • 28. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Una práctica común en la programaciónUna práctica común en la programación orientada a objetos (oop) es determinar siorientada a objetos (oop) es determinar si un objeto existe o no, pues el volverlo aun objeto existe o no, pues el volverlo a crear nos marcaría un mensaje de error.crear nos marcaría un mensaje de error.  En este caso, necesitamos verificar si elEn este caso, necesitamos verificar si el objeto existe para detener la canciónobjeto existe para detener la canción previa.previa.  Los objetos que aún no están definidos,Los objetos que aún no están definidos, tienen un valor predeterminado detienen un valor predeterminado de nullnull..
  • 29. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Para ello, necesitamos determinar si elPara ello, necesitamos determinar si el objeto existe antes de detener el sonido.objeto existe antes de detener el sonido.  Si no existe y lo queremos detener, elSi no existe y lo queremos detener, el compilador nos enviará un mensaje decompilador nos enviará un mensaje de error. La sentencia para ello es:error. La sentencia para ello es: if(snd != null){if(snd != null){ channel.stop();channel.stop(); }}
  • 30. Programar los botones paraProgramar los botones para seleccionar una canciónseleccionar una canción  Para cargar un archivo externoPara cargar un archivo externo necesitamos crear un objeto URLRequest.necesitamos crear un objeto URLRequest.  En esta rutina crearemos las instancias deEn esta rutina crearemos las instancias de los objetos y ejecutaremos el sonido:los objetos y ejecutaremos el sonido: channel = snd.play();channel = snd.play();  Asignamos el objeto de transformaciónAsignamos el objeto de transformación para manejar volumen y sonido:para manejar volumen y sonido: channel.soundTransform = trans;channel.soundTransform = trans;
  • 31. Controlar la visibilidad delControlar la visibilidad del volumen y del balance devolumen y del balance de los sonidoslos sonidos Unidad 9Unidad 9
  • 32. Controlar la visibilidad del volumenControlar la visibilidad del volumen y del balance de los sonidosy del balance de los sonidos  Una ves que el usuario ha seleccionado elUna ves que el usuario ha seleccionado el botón, hacemos visibles los deslizadoresbotón, hacemos visibles los deslizadores cambiando la propiedadcambiando la propiedad visiblevisible aa verdadero.verdadero.  También desplegaremos el valor delTambién desplegaremos el valor del paneo y del volumen, para ellopaneo y del volumen, para ello multiplicaremos la fracción por 100.multiplicaremos la fracción por 100.
  • 33. Controlar la visibilidad del volumenControlar la visibilidad del volumen y del balance de los sonidosy del balance de los sonidos  Para redondear los decimales, podemosPara redondear los decimales, podemos utilizar la función int() o los métodosutilizar la función int() o los métodos Math.round() (redondea de .5 paraMath.round() (redondea de .5 para arriba) , Math.floor() (trunca siemprearriba) , Math.floor() (trunca siempre abajo) o Math.ceil() (Redondea siempreabajo) o Math.ceil() (Redondea siempre para arriba).para arriba).
  • 34. Añadir unAñadir un listenerlistener parapara detectar las etiquetas de losdetectar las etiquetas de los archivo MP3sarchivo MP3s Unidad 9Unidad 9
  • 35. Añadir unAñadir un listenerlistener para detectar laspara detectar las etiquetas de los archivo MP3setiquetas de los archivo MP3s  Los archivos MP3 pueden ser codificadosLos archivos MP3 pueden ser codificados con etiquetas (cadenas) que contengancon etiquetas (cadenas) que contengan información sobre sus contenidos.información sobre sus contenidos.  El formato de etiquetas MP3 que aceptaEl formato de etiquetas MP3 que acepta Flash es el ID3.Flash es el ID3.  Por ejemplo, un archivo MP3 puedePor ejemplo, un archivo MP3 puede contener el nombre de la canción, sucontener el nombre de la canción, su autor, el nombre del album, el número deautor, el nombre del album, el número de pista, etc.pista, etc.
  • 36. Añadir unAñadir un listenerlistener para detectar laspara detectar las etiquetas de los archivo MP3setiquetas de los archivo MP3s  Flash puede detectar si el archivo deFlash puede detectar si el archivo de sonido tiene dichas etiquetas, y envía unsonido tiene dichas etiquetas, y envía un evento si es el caso.evento si es el caso.  Podemos verificar si las etiquetas sePodemos verificar si las etiquetas se encuentran vacías o contienenencuentran vacías o contienen información por medio del valorinformación por medio del valor nullnull..  Vaciaremos la información en la caja deVaciaremos la información en la caja de textotexto infoinfo..
  • 37. Añadir unAñadir un listenerlistener para detectar laspara detectar las etiquetas de los archivo MP3setiquetas de los archivo MP3s  Para añadir texto a una cadena que yaPara añadir texto a una cadena que ya existe, debemos utilizar el métodoexiste, debemos utilizar el método appendText(), exclusivo de AS 3.0.appendText(), exclusivo de AS 3.0.
  • 38. Añadir un objeto deAñadir un objeto de formateo de textoformateo de texto Unidad 9Unidad 9
  • 39. Añadir un objeto de formateo deAñadir un objeto de formateo de textotexto  Para poder darle formato a un texto, sePara poder darle formato a un texto, se puede crear el objeto de la clasepuede crear el objeto de la clase TextFormat.TextFormat.  Dentro de este, se puede darle un valor alDentro de este, se puede darle un valor al parámetroparámetro urlurl para hacer un hipertexto.para hacer un hipertexto.
  • 40. Añadir los controles aAñadir los controles a los deslizadoreslos deslizadores Unidad 9Unidad 9
  • 41. Añadir los controles a losAñadir los controles a los deslizadoresdeslizadores  Por último activaremos los deslizadoresPor último activaremos los deslizadores por medio de detectores de eventospor medio de detectores de eventos (listeners).(listeners).  El evento CHANGE se encuentra en laEl evento CHANGE se encuentra en la clase SliderEvent, la cual fue importada alclase SliderEvent, la cual fue importada al inicio del ejercicio.inicio del ejercicio.  Los nuevos datos los cargaremos en elLos nuevos datos los cargaremos en el objeto de transformación y lo asignaremosobjeto de transformación y lo asignaremos al canal de sonido (SoundChannel).al canal de sonido (SoundChannel).
  • 42. Preguntas de revisiónPreguntas de revisión Unidad 9Unidad 9
  • 43. Preguntas de revisiónPreguntas de revisión  ¿Con cuál de las tres clases de ActionScript¿Con cuál de las tres clases de ActionScript usted puede cargar, ejecutar y controlar unusted puede cargar, ejecutar y controlar un archivo externo de sonido?archivo externo de sonido?  ¿Cuáles son las dos propiedades de un¿Cuáles son las dos propiedades de un archivo de sonido que usted puede controlararchivo de sonido que usted puede controlar con la clasecon la clase SoundTransformSoundTransform??  ¿Cuál es el método de la clase¿Cuál es el método de la clase TextFieldTextField queque sirve para remplazar texto en una cadena?sirve para remplazar texto en una cadena?
  • 44. Preguntas de revisiónPreguntas de revisión  ¿Cuál es el método para añadir texto a¿Cuál es el método para añadir texto a una cadena ya existente?una cadena ya existente?  ¿Cuál es el evento de la clase¿Cuál es el evento de la clase SoundSound que responde cuando se detectanque responde cuando se detectan etiquetas ID3 de un archivo de sonidoetiquetas ID3 de un archivo de sonido tipotipo MP3sMP3s??