Contenido

Coverflow con MooTools

26 Nov

+ 18

Hoy Dani, me pasa este enlace en el que podemos ver una versión de Coverflow desarrollada en MooTools. Además de su ligero peso me ha sorprendido la sensación de fluidez que he percibido desde Firefox (no he probado con otro Explorador).

Código

//Javascript
var CoverFlow = new Class({
	options: {
		container: 'CF',
		slider: {"slider":"slider","knob":"knob"},
		caption: 'captions',
		reflection: 0.5,
		startIndex: 0,
		useMouseWheel: true
	},
	initialize: function(options){
		this.setOptions(options)
		this.cur = 0;
		this.tar = 0;
		this.curI = 0;
		this.oW = $(this.options.container).offsetWidth;
		this.sz = this.oW * 0.5;
		this.init();
		this.checker = this.check.periodical(100, this);
	},
	check: function(){
		//console.log("this.tar:"+this.tar+"  this.cur:"+this.cur)
		switch (this.tar < this.cur-1 || this.tar > this.cur+1)
		{
			case true:
				this.moveTo(this.cur + (this.tar-this.cur)/3);
			default:
				//$clear(this.checker);
				break;
		}
	},
	init: function(){
		$$(this.options.images).each(function(image, i){
			image.setStyle("display","block");
			image.addEvent('click', this.glideTo.bind(this,[i]));
		}, this);

		this.sli = new Slider($(this.options.slider.slider), $(this.options.slider.knob),{
			steps: this.options.images.length-1,
		}).set(this.options.startIndex);
		this.sli.addEvent('onChange', this.glideTo.bind(this));

		if(this.options.useMouseWheel)
			document.addEvent('mousewheel', this.scoll.bind(this));

		$(this.options.container).setStyle("height", this.oW*0.33);
		$(this.options.container).setStyle("visibility","visible");
		this.moveTo(this.options.startIndex*-150);
		this.glideTo(this.options.startIndex);
	},
	scoll: function(e){
		var d = e.wheel;
		if(d > 0 && this.curI > 0)
			this.curI--;this.glideTo(this.curI);

		if(d < 0 && this.curI < this.options.images.length-1)
			this.curI++;this.glideTo(this.curI);
	},
	glideTo: function(i){
		$(this.options.caption).set('html', this.options.images[i].alt);
		this.curI = i;
		this.tar = i*-150;
		this.sli.set(i);
	},
	moveTo: function(x){
		x = Math.round(x);
		this.cur = x;
		var zI = this.options.images.length;
		$$(this.options.images).each(function(img){
			var z = Math.sqrt(10000 + x * x) + 100;
			var xs = x / z * this.sz + this.sz;
			var imgH = img.height;
			var imgW = img.width;
			var percent = 100;
			if ((imgW + 1) > (imgW / (this.options.reflection + 1))){
				percent = 115;
			}
			var newL = xs - (percent / 2) / z * this.sz;
			var newH = (imgH / imgW * percent) / z * this.sz;
			var newT = (this.oW * 0.33 - newH) + ((newH / (this.options.reflection + 1)) * this.options.reflection);

			img.setStyle("left", newL);
			img.setStyle("height", newH);
			img.setStyle("top", newT);
			img.setStyle("zIndex", x < 0 ? zI++ : zI--);		

			x += 150;
		}, this);
	}
});
CoverFlow.implement(new Options, new Events);

window.addEvent('load', function(){
	new CoverFlow({
		images: $$("#CF img"),
		caption: $('captions')
	});
});
//HTML
<div id="CF">
	<img class="cfImg" src="img/refl_img001.png" alt="First Image" />
	<img class="cfImg" src="img/refl_img002.png" alt="Second Image" />
	<img class="cfImg" src="img/refl_img003.png" alt="Image" />
	<img class="cfImg" src="img/refl_img001.png" alt="Image" />
	<img class="cfImg" src="img/refl_img002.png" alt="Image" />
	<img class="cfImg" src="img/refl_img003.png" alt="Image" />
	<img class="cfImg" src="img/refl_img001.png" alt="Image" />
	<img class="cfImg" src="img/refl_img002.png" alt="Image" />
	<img class="cfImg" src="img/refl_img003.png" alt="Image" />
	<img class="cfImg" src="img/refl_img001.png" alt="Image" />
	<img class="cfImg" src="img/refl_img002.png" alt="Image" />
	<img class="cfImg" src="img/refl_img003.png" alt="Image" />
</div>
 

Si alguien se anima, me gustaría verlo con imagenes reales.

[Demo][Descargar]

Me parece bastante lento en las transiciones, pero es un buen comienzo…

Tengo ganas de ver uno, desarrollado en jQuery… :P

Cuando vi el script lo primero que se me ocurrió fue “esto quedaría bien con Last.fm”.
Aquí ya tienes un ejemplo con imágenes reales ;):
http://hpneo.com/labs/coverflow/coverflow.php?usuario=octa62

@n37, ¿lo has notado lento? A mi me ha volado.

@HPNeo, se ve perfecto. Aqui si he notado un poco la lentitud en las transacciones, pero puede ser por el PC del trabajo…

Gracias

eso esta muy bueno ! gracias por compartirlo :D

un motivo más para empezar con mootools

@n37: yo no lo he notado lento, a lo mejor tienes muchas pestañas abiertas jeje

Yo sí lo noto lentillo, pero va bene en Opera. Buen apunte, Anieto, y genial demo, HPNeo.

Yo lo probe en FF, IE, y Opera y se ve perfecto. Pueden que la velocidad del efecto cambie en los browsers, pero ver se ve bien. Safari es el problema, las imágenes se distorsionan hasta transformarse en una linea =p

Agustin acá te deje un demo con fotografias: http://www.freakgroup.com.ar/wp-content/ejemplos/coverflow/

Un abrazo y gracias por la info.

Probado en Firefox y Safari en Leopard. Funciona de lujo.

Muchas gracias

QUE DIVERTIDO http://www.grupoweblider.com/pablo/slqh

dedicado a los que les mola se lo que hicisteis

perdon ;) se me olvido comertal lo que hace:

Roba el feed RSS de youtube de CarlesSR Con el ultimo programa, lo parsea y toma las imagenes, a las que añade transparencia y cachea, click en xº Parte para ver el video con una lightbox caserillo

Se sale, estoy deseando tener un rato para probarlo!

Es el mismo MooFlow. Bueno, si es el mismo, ya tienes una galería con imagenes reales. Si no lo es, también es interesante…

Creo que no puse bien la etiqueta HTML de enlace para MooFlow, lo siento. Acá va el link: http://www.ajaxrain.com/script.php?sId=2783

Me ha encantado este post =D
Yo tambien me puse a desarrollar algo jeje, y aqui tienen el resultado:

Version Grande
Version Pequeña

De nueva cuenta muchas gracias por mostrarme esta maravillosa herramienta.

Hace poquito que me he enganchado a esta fabulosa libreria.

Mi intención es utilizar una galeria de fotos CoverFlow o MooFlow y luego al clickar encima de la imagen “activa” poder abrirla en un tamaño más grande mediante slimbox.

He probado por separado y puedo montar la galeria con MooFlow y tambien se me abre una imagen cualquiera con slimbox, pero ambas librerias utilizadas en lo mismo no consigo hacerlas funcionar.

Alguien me puede echar un cable?
Gracias de antemano.

Hola, soy nuevo en esto y estoy intentanto hacer funcionar el Coverflow con MooTools y no me aclaro. Sigo las instrucciones pero nada, lo maximo que consigo es que cargue la mancha pero no se mueve nada. Ni salen las fotos ni nada. No se si es porque me falta algún archivo, ya que no puedo descargarlo desde el vinculo, que esta roto…
Alguien puede explicar paso a paso que hacer y que archivos subir al servidor, en que carpetas y que códigos poner en el index.html?

Gracias de antemano a todos.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.


Cerrar
Enviar por Correo