Foros del Web » Creando para Internet » Flash y Actionscript »

¿loadSound es tan difícil?

Estas en el tema de ¿loadSound es tan difícil? en el foro de Flash y Actionscript en Foros del Web. Hola kolegas. Estoy muy confundido. Espero que puedan ayudarme. Tengo una amiga que posee un sitio de literatura, y grabamos algunos mp3 con recitaciones poéticas, ...
  #1 (permalink)  
Antiguo 13/03/2004, 07:51
 
Fecha de Ingreso: noviembre-2003
Mensajes: 68
Antigüedad: 21 años
Puntos: 0
¿loadSound es tan difícil?

Hola kolegas.
Estoy muy confundido. Espero que puedan ayudarme.
Tengo una amiga que posee un sitio de literatura, y grabamos algunos mp3 con recitaciones poéticas, ocho en total. Su peso varía entre los 70 y los 200 KB. La idea era que estuviesen disponibles en el sitio web para ser descargados, pero yo tuve la bonita idea de hacer una interfase de usuario muy simple en Flash 6 para que se pudiesen reproducir on line.
Aunque nunca lo había usado, supe que para no hacer gigantesco al archivo swf al importar los sonidos a Flash, era preferible utilizar el método loadSound de el objeto Sound, y así cargar los mp3 alternativamente dentro de un movieClip en la pelicula.
Hasta ahí todo bien. Creé ocho escenas, una por cada mp3, en las que había un listado con botones para ir a las diferentes escenas. Tb había en cada escena un botón de play que dispara el método loadSound, y una vez cargado (lo determiné con los métodos getBytesLoaded y getBytesTotal del objeto sound) comienzo la reproducción con el método start. Luego utilizo el manejador de eventos onSoundComplete para detener todos los sonidos (stopAllSounds). Tb agregué un botón de stop, que detiene todos los sonidos.
Lo probé localmente, haciendo referencia a los archivos mp3 en la llamada al método loadSound de forma local ("archivo.mp3") y funciona estupendamente. Luego decidí agregarle un indicador del procentaje de carga a través de una variable que hace el cociente entre getBytesLoaded y getBytesTotal del objeto de sonido creado multiplicado por 100, y la imprimí en pantalla mediante un campo de texto dinámico. Al probarlo localmente funcionó, pero la carga es tan rápida que no me permite ver el indicador de porcentage de carga, así que decidí subirlo a un host basado en Unix para verlo actuar on line.
Aquí todo se transformó en incertidumbre.
No me cargaba nunca el mp3, y la campo de texto me mostraba un desagradable NaN. ¿Cómo no es un número, si hago trace con la variable, de forma local, y me devuelve un glorioso 100?
Aventuré que quizás las referencias relativas a los archivos mp3 no eran adecuadas y las cambié por absolutas. Nada.
Cambié los permisos CHMOD de los archivos en el host. Nada.

A ver si alguna alma caritativa puede sacarme del pantano. Aquí les adjunto los ActionScripts de los fotogramas de una escena (son todas iguales, y lo único que cambia es la referencia al archivo en particular que se reprodzca en esa escena).

Fotograma 1 (solo hay botón de play que lleva al fotograma 5):

stop();
stopAllSounds(); // para detener la reproducción si se hace click
//en el botón de stop
poesia = new Sound(loader); // constructor del objeto sound, y lo
// asigno al movieClip
//llamado "loader"

Fotograma 5 (solo puede llegarse aquí haciendo click en el botón play en el fotograma 1, y solo hay un botón de stop que lleva al fotograma 1 nuevamente):

poesia.loadSound("http://www.synapses.com.ar/01.mp3", false); //referencia absoluta, y asigno que la carga se haga como
//evento
var cociente = (poesia.getBytesTotal() / poesia.getBytesLoaded())*100; // Acá debe haber un ERROR, es el cociente entre lo
// cargado hasta el momento y lo que hay que cargar
// en total. lo multiplico por 100 para hacerlo porcentual
if (cociente == 100) {
gotoAndStop(10); // si se cargó va al fotograma 10,
//donde se reproduce el sonido
} else {
play(); // si no se cargó va al siguiente fotograma (6)
// que envía el cabezal de lectura de nuevo al
// fotograma 5
}

Fotograma 6 (loop para la precarga):

gotoAndPlay(5);

Fotograma 10 (reproducción del archivo mp3 cargado, solo hay un botón de stop que envía el cabezal de lectura de nuevo al fotograma 1)

stop();
poesia.start(); // inicio la reproducción
poesia.onSoundComplete = function() { // cuando termina el mp3
stopAllSounds(); // detengo todo sonido
gotoAndStop(1); // y voy de nuevo al
// fotograma 1 para
// volver a escucharlo o ir
// a otra escena
}

Y he ahí mi dilema.
Pueden verlo en http://www.synapses.com.ar/mp3dewebo.html

Y si quieren pueden bajarse el .fla desde http://www.synapses.com.ar/mp3dewebo.fla

Desde ya muchísimas gracias.
__________________
[|_4 (0|\/|U|\|1(4(10|\| 35 |_4 FU3RZ4]
  #2 (permalink)  
Antiguo 14/03/2004, 06:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 68
Antigüedad: 21 años
Puntos: 0
Bueno, esta mal que me conteste yo, y aunque todavía no anda creo que ya estoy entendiendo qué pasa.

Para empezar el método getBytesLoaded es aplicable a los sonidos de flujo solamente, así que cambié eso:

poesia.loadSound("http://www.synapses.com.ar/01.mp3", false);

por

poesia.loadSound("http://www.synapses.com.ar/01.mp3", true);

de igual manera me sigue devolviendo No un Numero (NaN)

:(

a seguir probando
__________________
[|_4 (0|\/|U|\|1(4(10|\| 35 |_4 FU3RZ4]
  #3 (permalink)  
Antiguo 14/03/2004, 14:31
 
Fecha de Ingreso: noviembre-2003
Mensajes: 68
Antigüedad: 21 años
Puntos: 0
bue, ya me dí por vencido, lo hice de otra forma, igual gracias.
__________________
[|_4 (0|\/|U|\|1(4(10|\| 35 |_4 FU3RZ4]
  #4 (permalink)  
Antiguo 16/03/2004, 23:10
 
Fecha de Ingreso: noviembre-2003
Mensajes: 68
Antigüedad: 21 años
Puntos: 0
Hey, las cosas hubieran sido mucho más faciles si hubiese dio a la sección recursos, donde está el depósito de flash
Allí el gran Maltos hizo algo muy parecido a lo que yo quiero, y allí están todas las respuestas a mis dudas.
USEMOS MÁS ESE REPOSITORIO DE .FLA!!!!!

Gracias Maltos.
__________________
[|_4 (0|\/|U|\|1(4(10|\| 35 |_4 FU3RZ4]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:32.