Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2004, 13:07
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 24 años, 6 meses
Puntos: 1284
diapositivas y transiciones

Hola amigos:

Estoy haciendo un proyector de diapositivas, y en un principio va bien, pero preparé unas pocas transiciones (descubrir por los 4 costados) y mozilla no hace "ni puto caso"

Este es el código:

Código PHP:
function fichas(imagen, tiempo)    {
    
this.imagen = imagen;
    
this.tiempo = tiempo;
}

var 
fichero = new Array();
fichero[0] = new fichas('fotos/maxi/Diapositiva52.jpg', 13000);
fichero[1] = new fichas('fotos/maxi/Diapositiva62.jpg', 13000);
fichero[2] = new fichas('fotos/maxi/Diapositiva66.jpg', 13000);
fichero[3] = new fichas('fotos/maxi/Diapositiva73.jpg', 13000);
fichero[4] = new fichas('fotos/maxi/Diapositiva82.jpg', 13000);
fichero[5] = new fichas('fotos/maxi/Diapositiva91.jpg', 13000);
fichero[6] = new fichas('fotos/maxi/Diapositiva95.jpg', 15000);
fichero[7] = new fichas('fotos/maxi/Diapositiva100.jpg', 13000);

var 
actual = 0;
var 
capa1, capa2;
var 
capaX = 0;
var 
capaY = 0;
var 
alto, ancho;
var 
foto1, foto2;
var 
principio = 0;

function 
iniEfecto()    {
    
capa2.style.left = 0;
    
capa2.style.top = 0;
    
capaX = 0; capaY = 0;
    
efectos[Math.floor(Math.random() * efectos.length)]();
/*
    switch(Math.floor(Math.random() * efectos.length))    {
        case 0: izqADer();
        break;
        case 1: derAIzq();
        break;
        case 2: arrAAba();
        break;
        case 3: abaAArr();
        break;
        otherwise
            derAIzq();
        break;
    }
*/
}

var 
efectos = [izqADer, derAIzq, arrAAba, abaAArr];

function 
izqADer()    {
    
capaX = capaX + 10;
    
capa2.style.left = capaX;
    if (
parseInt(capaX) < parseInt(ancho)) setTimeout("izqADer()", 10);
}

function 
derAIzq()    {
    
capaX = capaX - 10;
    
capa2.style.left = capaX;
    if (
parseInt(capaX) > parseInt(ancho * -1)) setTimeout("derAIzq()", 10);
}

function 
arrAAba()    {
    
capaY = capaY + 10;
    
capa2.style.top = capaY;
    if (
parseInt(capaY) < parseInt(alto * 1)) setTimeout("arrAAba()", 10);
}

function 
abaAArr()    {
    
capaY = capaY - 10;
    
capa2.style.top = capaY;
    if (
parseInt(capaY) > parseInt(alto * -1)) setTimeout("abaAArr()", 10);
}


function 
presentar()    {
    
iniEfecto();

    var 
siguiente = (actual + 1) % fichero.length;
    
window.status = "foto: " + fichero[siguiente].imagen;
    
asignarFondo(capa2, fichero[actual].imagen);
    
asignarFondo(capa1, fichero[siguiente].imagen);

    var 
tiempo = fichero[actual].tiempo;
    
actual = siguiente;
    
setTimeout("presentar()", tiempo);
}

function 
asignarFondo(capa, imagen)    {
    var 
salida = "url(" + imagen + ")";
    
capa.style.backgroundImage = salida;
}

function 
crearCapa()    {
    
capa = document.createElement("div");
    
capa.style.backgroundPosition = "center center";
    
capa.style.backgroundAttachment = "fixed";
    
capa.style.backgroundRepeat = "no-repeat";
    
capa.style.top = 0;
    
capa.style.left = 0;
    
capa.style.margin = "0";
    
capa.style.height = "100%";
    
capa.style.width = "100%";
    
capa.style.overflow = "hidden";
    
capa.style.position = "absolute";
    return 
capa;
}

function 
proyector()    {
    
document.body.style.margin = 0;
    
document.body.style.width = "100%";
    
document.body.style.height = "100%";

    
capa1 = crearCapa();
    
document.body.appendChild(capa1);
    
    
capa2 = crearCapa();
    
capa1.appendChild(capa2);

    
ancho = (document.all) ? document.body.offsetWidth : window.innerWidth;
    
alto = (document.all) ? document.body.offsetHeight : window.innerHeight;

    
foto1 = new Image();
    
foto1.src = fichero[0].imagen;

    
foto2 = new Image();
    
foto2.src = fichero[1].imagen;

    
asignarFondo(capa2, fichero[0].imagen);
    
asignarFondo(capa1, fichero[1].imagen);
    
window.status = "foto: " + fichero[0].imagen;

    
setTimeout("presentar()", fichero[actual].tiempo);
}

function 
ambiente(sonido)    {
    var 
musiquita = document.createElement("embed");
    
musiquita.src = sonido;
    
musiquita.loop = true;
    
musiquita.style.display = "none";
    
document.body.appendChild(musiquita);
} 
se puede ver aquí: http://www.pepemolina.com/imagenes/proyector.html

Se puede ver un comentario que pretendía ser una alternativa a los efectos...
No lo he borrado porque provoca un buen efecto (para quien le interese)

Académicamente me gustaría destacar la forma de usar los efectos "aleatoriamente"...
efectos[Math.floor(Math.random() * efectos.length)]();
... se trata de un array de funciones, y se activan simplemente poniendo () detrás de el elemento del array...

Pues eso: Si alguien encuentra la forma de que funcione en mozilla le agradecería la info...

y si quieren poner más efectos ¡yabadabadú...!

Saludos

Última edición por caricatos; 08/11/2005 a las 13:23