Foros del Web » Programando para Internet » Javascript »

Problemas con Slide Show

Estas en el tema de Problemas con Slide Show en el foro de Javascript en Foros del Web. Saludos. Tengo muy pocos conocimientos de Javascript y he encontrado un código muy bueno para un Slide Show que muestra las imágenes que le paso ...
  #1 (permalink)  
Antiguo 10/04/2009, 21:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 19 años
Puntos: 1
Problemas con Slide Show

Saludos.

Tengo muy pocos conocimientos de Javascript y he encontrado un código muy bueno para un Slide Show que muestra las imágenes que le paso a través de un arreglo.

El único problema lo tengo al principio del Slide. Es irregular la aparición de la primera foto y ya luego, todo marcha bien.

Esto es lo que quiero resolver. He hecho varias cosas, entre las que está poner como imagen de background del <body> la imagen primera que sale pero sigue la irregularidad.

Pueden ver lo que sucede en: http://www.jinanproducciones.com/fot...ner/banner.php

Yo tomé este código de aquí: http://www.cryer.co.uk/resources/jav...2slideshow.htm, y las únicas modificaciones que hice fué el modo como le pasé las fotos que es, a través de un arreglo.

Muchísimas gracias y a continuación el código:

Código:
<body>
<div id="EmilyPictureBackground">
  <img src="50.jpg" name="EmilyPicture" width="275" height="365" id="EmilyPicture"></div>
<script type="text/javascript">
// Browser Slide-Show script. With image cross fade effect for those browsers
// that support it.
// Script copyright (C) 2004-2008 www.cryer.co.uk.
// Script is free to use provided this copyright header is included.
var FadeDurationMS=2000;
function SetOpacity(object,opacityPct)
{
	// IE.
	object.style.filter = 'alpha(opacity=' + opacityPct + ')';
	// Old mozilla and firefox
	object.style.MozOpacity = opacityPct/100;
	// Everything else.
	object.style.opacity = opacityPct/100;
}
function ChangeOpacity(id,msDuration,msStart,fromO,toO)
{
	var element=document.getElementById(id);
	var msNow = (new Date()).getTime();
	var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
	if (opacity>=100)
	{
		SetOpacity(element,100);
		element.timer = undefined;
	}
	else if (opacity<=0)
	{
		SetOpacity(element,0);
		element.timer = undefined;
	}
	else 
	{
		SetOpacity(element,opacity);
		element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10);
	}
}
function FadeInImage(foregroundID,newImage,backgroundID)
{
	var foreground=document.getElementById(foregroundID);
	if (foreground.timer) window.clearTimeout(foreground.timer);

	if (backgroundID)
	{
		var background=document.getElementById(backgroundID);
		if (background)
		{
			if (background.src)
			{
				foreground.src = background.src;	
				SetOpacity(foreground,100);
			}
			background.src = newImage;
			background.style.backgroundImage = 'url(' + newImage + ')';
			background.style.backgroundRepeat = 'no-repeat';
			var startMS = (new Date()).getTime();
			foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10);
		}
	} else {
		foreground.src = newImage;
	}
}
var slideCache = new Array();
function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs)
{
	var imageSeparator = imageFiles.indexOf(";");
	var nextImage = imageFiles.substring(0,imageSeparator);
	FadeInImage(pictureID,nextImage,backgroundID);
	var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)
		+ ';' + nextImage;
	setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")",
		displaySecs*1000);
	// Cache the next image to improve performance.
	imageSeparator = futureImages.indexOf(";");
	nextImage = futureImages.substring(0,imageSeparator);
	if (slideCache[nextImage] == null)
	{
		slideCache[nextImage] = new Image;
		slideCache[nextImage].src = nextImage;
	}
}
</script>
<?php

//creamos el arreglo
$input = array();
$cont=1;
while ($cont<55) {
	$input[$cont]=$cont;
	++$cont;
}

//desordenamos el arreglo y creamos la cadema de elementos
shuffle($input);//desordena
$fotos='';
$cont=1;
while ($cont<55) {
	$fotos.=$input[$cont].".jpg";
	if ($cont<54) {
		$fotos.=";";
	}
	++$cont;
}
?>
<script type="text/javascript">
RunSlideShow("EmilyPicture","EmilyPictureBackground","<?php echo $fotos;?>",5);
</script>
</body>
  #2 (permalink)  
Antiguo 11/04/2009, 08:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 19 años
Puntos: 1
Respuesta: Problemas con Slide Show

Pues ya lo he solucionado.

Al pasarle las fotos al "RunSlideShow", la función que hace el Slide, se debe colocar como primera foto la misma del Background:

<script type="text/javascript">
RunSlideShow("EmilyPicture","EmilyPictureBackgroun d","50.jpg;<?php echo $fotos;?>",5);
</script>

De esa forma ya no hace el brinco del inicio.

Espero les funcione.
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 16:48.