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: 22 años
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(imagentiempo)    {
    
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 
capa1capa2;
var 
capaX 0;
var 
capaY 0;
var 
altoancho;
var 
foto1foto2;
var 
principio 0;

function 
iniEfecto()    {
    
capa2.style.left 0;
    
capa2.style.top 0;
    
capaX 0capaY 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 = [izqADerderAIzqarrAAbaabaAArr];

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(capa2fichero[actual].imagen);
    
asignarFondo(capa1fichero[siguiente].imagen);

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

function 
asignarFondo(capaimagen)    {
    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(capa2fichero[0].imagen);
    
asignarFondo(capa1fichero[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