Tema: Proyecto
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/08/2015, 11:07
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 2 meses
Puntos: 977
Respuesta: Proyecto

Bienvenido a FDW.

Dentro de cada sección, podrías tener un elemento <audio> con su respectivo archivo de audio cargado y cuando hagas scroll (el cual es un evento del DOM), detectarías si se ha llegado al inicio (borde superior) de la sección (cualquiera de ellas) y ejecutas el audio que contenga.

Código HTML:
Ver original
  1. <section id = "parte1">
  2.     <audio>
  3.         <source src = "audio1.mp3" type = "audio/mpeg" />
  4.     </audio>
  5.  
  6. <section id = "parte2">
  7.     <audio>
  8.         <source src = "audio2.mp3" type = "audio/mpeg" />
  9.     </audio>
  10.  
  11. <section id = "parte3">
  12.     <audio>
  13.         <source src = "audio3.mp3" type = "audio/mpeg" />
  14.     </audio>
  15.  
  16. <section id = "parteN">
  17.     <audio>
  18.         <source src = "audioN.mp3" type = "audio/mpeg" />
  19.     </audio>

Código Javascript:
Ver original
  1. [].forEach.call(document.querySelectorAll("[id^=parte]"), function(section){
  2.     window.addEventListener("scroll", function(){
  3.         if (this.scrollY >= section.offsetTop - document.documentElement.clientHeight &&
  4.             this.scrollY + document.documentElement.clientHeight <= section.offsetHeight + section.offsetTop){
  5.             section.querySelector("audio").play();
  6.         }
  7.         else{
  8.             section.querySelector("audio").pause();
  9.         }
  10.     }, false);
  11. });

Lo que hace el script es, primero, recorrer al conjunto de elementos cuyo id empiece por "parte" (como veo que tienes a tus secciones) y ejecutar una función por cada uno de ellos. En la función, registraremos el evento scroll en la ventana y cuando este se produzca, es decir, cuando el usuario se desplace con la barra de desplazamiento, se ejecutará otra función.

En esta segunda función, verifico si la cantidad de píxeles desplazados por la barra vertical es mayor o igual a la distancia que hay desde el tope de la sección al tope del documento menos la altura del documento y que, además, la cantidad de píxeles desplazados más la altura del documento sea menor que la altura de la sección más la distancia que hay del tope de esta hasta el tope del documento. Explicado de otra forma, esta condición verifica que la sección sea visible y que el scroll no la haya pasado (que no se haya bajado lo suficiente como para que la sección ya no se pueda ver). Cuando ocurra esto, se tomará al elemento <audio> que contenga la sección y reproduciremos el archivo de audio que contenga; cuando la condición no se cumpla, se pausa dicha reproducción.

Cabe señalar que esto te funcionará teniendo una, cinco o todas las secciones que quieras.

Lo de la reproducción del segundo audio no me ha quedado muy claro. ¿A qué te refieres con "meter en momentos concretos un segundo sonido"? ¿Cuáles son o serán esos "momentos concretos"?

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand