Foros del Web » Programando para Internet » Javascript »

Fundido en negro invertido

Estas en el tema de Fundido en negro invertido en el foro de Javascript en Foros del Web. Fundido en negro: Cuando en videos la imagen deseparece llenandose todo de negro. Como no se el nombre técnico de lo contrario pues lo he ...
  #1 (permalink)  
Antiguo 28/03/2010, 18:42
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 17 años, 11 meses
Puntos: 4
Fundido en negro invertido

Fundido en negro: Cuando en videos la imagen deseparece llenandose todo de negro.

Como no se el nombre técnico de lo contrario pues lo he llamado invertido :P, pero vamos: Hacer que una capa con background negra se vaya haciendo transparente de forma progresiva y deje ver lo que hay detrás.

Al principio tenía un código bastante elegante, hasta que me enteré que en javascript la instrucción setTimeOut no detiene la ejecución del script sino que lanza la funcion llamada al tiempo indicado pero sigue interpretando el código que hay a continuación. Así que se me ocurrió lanzar varios eventos con un "delay" de tiempo progresivo entre ellos, tal que así:

Código Javascript:
Ver original
  1. function cerrar_ventana()
  2. {
  3.  /*Aquí va un código que hace cosas antes de cerrar la ventana, como borrar algún objeto, nada relevante para este ejemplo*/
  4.  
  5.   for (var i=80; i>0; i--)
  6.     {
  7.              var delay = (90 - i)/10;
  8.              var total = delay * 250;
  9.          setTimeout("fadeout("+i+")", total);
  10.     }
  11.    
  12. }
  13.  
  14. function fadeout(i)
  15. {
  16.   var marco = document.getElementById("marco_intro");
  17.  
  18.     if (i >= 10 && i < 100)
  19.         {
  20.             marco.style.opacity= '0.'+i;
  21.             marco.style.filter = 'alpha(opacity='+i+')';
  22.         }
  23.         if (i > 1 && i < 10)
  24.         {
  25.             marco.style.opacity= '0.1';
  26.             marco.style.filter = 'alpha(opacity='+i+')';
  27.             marco.style.visibility = "hidden"; //Esto es para que pueda clickearse en lo que hay debajo después de que la capa se haya hecho transparente.
  28.         }
  29. }

Esto funciona, llevando la opacidad desde un 80% a un 10%, pero me gustaría saber si hay alguna forma de hacerlo más limpiamente... pues me parece una auténtica "chapucilla".
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."

Última edición por Dude--; 28/03/2010 a las 18:47
  #2 (permalink)  
Antiguo 28/03/2010, 21:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años
Puntos: 1517
Respuesta: Fundido en negro invertido

Puedes también usar setInterval, pero es más de lo mismo, solo que se ejecuta cada cierto tiempo y no como setTimeout que se ejecuta una sola vez, a menos que llames la función. Trata a ver como se ve con setInterval.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 28/03/2010, 21:43
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 17 años, 11 meses
Puntos: 4
Respuesta: Fundido en negro invertido

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes también usar setInterval, pero es más de lo mismo, solo que se ejecuta cada cierto tiempo y no como setTimeout que se ejecuta una sola vez, a menos que llames la función. Trata a ver como se ve con setInterval.
El problema de setInterval es que se ejecuta indefinidamente cada X tiempo, por lo que no me valdría ¿cómo detengo su ejecución cuando ya hubiera quedado transparente la capa?
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #4 (permalink)  
Antiguo 28/03/2010, 21:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años
Puntos: 1517
Respuesta: Fundido en negro invertido

Existe una función llamada clearInterval, igual que clearTimeout.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: fundido, negro
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 04:05.