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.