Blog

Aplicar efectos visuales a Elementos

Apr 01, 2009 | Español | By Crysfel | 10 Comments | Read in English

El usuario es la parte más importante de nuestros sistemas y debemos garantizar una buena impresión con nuestras aplicaciones. Ext JS cuenta con diferentes efectos visuales que nos permitirán atraer la atención del usuario para informarle el estado del sistema, en este tema se muestran los efectos que podemos utilizar.

Aplicar efectos visuales a Elementos
Author: Crysfel

I'm a software developer with 6+ years of experience, when I'm not developing software I may be writing a tutorial, you can follow me on twitter

La clase Ext.Fx es la responsable de agregar esta funcionalidad al objeto Element (del cual hemos hablado anteriormente), utilizamos los métodos de la clase Fx mediante las instancias del objeto Element.

Empaquetando el tutorial

Para iniciar con el tutorial es necesario empaquetar el código que escribiremos, ya sabemos cuales son las ventajas de hacer esto.

Ext.namespace('com.quizzpot.tutorial');

com.quizzpot.tutorial.Fx = {
	init: function(){
		//Aquí el código del tutorial
	}
}
//Ejecutar la función “init” cuando el DOM esté listo para ser usado
Ext.onReady(com.quizzpot.tutorial.Fx.init,com.quizzpot.tutorial.Fx);

Fading

El primer efecto visual que veremos se llama “fade” y existen dos tipos, fadeIn y fadeOut, los cuales ocultan o aparecen suavemente un elemento. Lo que vamos a hacer es crear un botón por cada efecto visual y al presionar ese botón ejecutaremos el efecto visual sobre el elemento que se encuentra en el material de apoyo.

//tomamos el elemento
var el = Ext.get('element');
el.center(); //lo centramos en la pantalla

//cuando se dé clic sobre el botón con id fadeInFx…
Ext.get('fadeInFx').on('click',function(){
	el.setOpacity(0); //le damos opacidad 0 al elemento
	el.fadeIn(); // para que aparezca suavemente
});
//al dar clic sobre el botón fadeOutFx…
Ext.get('fadeOutFx').on('click',function(){
	el.fadeOut(); //desaparece suavemente
});

Este efecto visual puede ser utilizado para eliminar o agregar registros a una tabla o panel y de esta manera llamar la atención del usuario y hacerle notar que algo está pasando.

Frame

El efecto “frame” genera un contorno alrededor del elemento que va creciendo y desapareciendo a la vez.

Ext.get('frameFx').on('click',function(){
	el.frame();
});

Este efecto visual puede ser utilizado para indicarle al usuario que cierta parte de la pantalla requiere su atención; podemos cambiar el color que tiene por defecto por algún otro color como rojo o amarillo los cuales indican advertencia o error, adicionalmente nos permite especificar el número de veces que se quiera repetir el efecto visual, en este ejemplo serán tres repeticiones.

Ext.get('frameFx').on('click',function(){
	el.frame('ff0000',3);
});

Ghost

Normalmente este efecto visual se utiliza para remover elementos de la pantalla, ya que desaparece el elemento suavemente y lo desliza en la dirección definida, por defecto es hacia abajo.

Ext.get('ghostFx').on('click',function(){
	el.ghost();
});

Highlight

Este efecto visual es muy utilizado para mostrar mensajes a los usuarios, de esta manera la atención del usuario es captada al mensaje que se desea mostrar, por defecto el elemento “brilla” en color amarillo, pero puede ser configurado para resplandecer en otro color.

Ext.get('highlightFx').on('click',function(){
	el.highlight('00ff77'); // cambiamos el color por defecto
	Ext.fly('msg').highlight(); //resplandece en color amarillo
});

Puff

Este efecto visual desaparece un elemento haciendo que “explote” y se difumine lentamente.

Ext.get('puffFx').on('click',function(){
	el.puff();
});

Es útil cuando se desea eliminar algún elemento por ejemplo en un carrito de compras, o en alguna galería donde se requiere eliminar una imagen.

Scale

Con este efecto visual podemos redimensionar un elemento, haciendo una transición de sus medidas actuales a las nuevas.

Ext.get('scaleFx').on('click',function(){
			el.scale(50,50);
});
Ext.get('scale2Fx').on('click',function(){
	el.scale(100,100);
});

El primer parámetro que recibe el método es el “width” y el segundo parámetro es el “height” del elemento.

Slide

Existen dos tipos del efecto “slide”, el “slideIn” y el “slideOut”, estos efectos permiten aparecer y desaparecer elementos de la pantalla de una manera llamativa, puede ser una alternativa para alguno de los afectos anteriores.

Ext.get('slideInFx').on('click',function(){
	el.slideIn(); //aparece el elemento
});
Ext.get('slideOutFx').on('click',function(){
	el.slideOut(); //desaparece
});

Este efecto visual puede ser utilizado para crear algún menú vistoso, galerías, transición de imágenes, el límite es tu imaginación.

Shift

Este efecto visual permite cambiar la posición, dimensiones y/o opacidad al mismo tiempo, es ideal para combinar varias propiedades que se deseen cambiar.

Ext.get('shiftFx').on('click',function(){
	el.shift({
		x: 100,
		y: 200,
		width: 200,
		height: 200
	});
});

Es importante mencionar que forzosamente se tiene que especificar alguna propiedad a cambiar de lo contrario al ejecutar el método sin argumentos no se realizará ningún efecto visual ya que no se le definió el comportamiento requerido.

Posiciones

La mayoría de los efectos visuales mencionados soportan las siguientes direcciones de movimiento en los efectos.

tl: Esquina superior izquierda (The top left corner)
t: El centro superior (The center of the top edge)
tr: La esquina superior derecha (The top right corner)
l: El centro izquierdo (The center of the left edge)
r: El centro derecho (The center of the right edge)
bl: La esquina inferior izquierda (The bottom left corner)
b: El centro inferior (The center of the bottom edge)
br: La esquina inferior derecha (The bottom right corner)

Easing

Para aplicar aceleración o desaceleración a los efectos podemos especificarle algún tipo de “easing” de la siguiente lista:

easeNone
easeIn
easeOut
easeBoth
easeInStrong
easeOutStrong
easeBothStrong
elasticIn
elasticOut
elasticBoth
backIn
backOut
backBoth
bounceIn
bounceOut
bounceBoth

Ext.get('scale3Fx').on('click',function(){
	el.scale(200,200,{
		easing:'elasticOut',duration:2
	});
});

Con esto logramos animaciones más llamativas, dándole al usuario una mejor experiencia al utilizar nuestros sistemas.

Conclusiones

Los efectos son una parte importante para mejorar la experiencia del usuario, algunos desarrolladores pueden pensar que esto es una pérdida de tiempo, pero la realidad es que los pequeños detalles son los que marcan la diferencia entre el éxito y el fracaso.

10 Responses to “Aplicar efectos visuales a Elementos”

  • Crysfel Apr 01, 2009

    El video tiene un pequeño error, y es que me confundí al decir “efecto”, varias veces dije “evento” en lugar de “efecto”… se nota claramente cuando me estoy refieriendo a un efecto, la verdad es que estaba medio soñoliento cuando lo grabe :(

  • David Apr 02, 2009

    Esperando impaciente el siguiente ;)

  • Urumitero May 12, 2009

    Excelente curso! Muchas gracias, de verdad!

  • Ronhead May 14, 2009

    Muy buenos tus videos…gracias por el material

  • Gustavo Jun 17, 2009

    tengo un problema no carga el video tutorial

  • Osvaldo Jul 15, 2009

    jeje.. perfecto socio tambien espero el siguiente

  • gorrion Jul 16, 2009

    Muchas gracias por el tutorial, la verdad es que profesionaliza las paginas web, tengo una pregunta, ¿que se puede hacer para que algunos efectos no queden fijos, por ejemplo el scale easing?
    Gracias

  • spit Jul 20, 2009

    Que chulos los efectos… con esto se le puede dar un toque mucho mas atractivo y ameno al usuarios a la hora de interactuar con la aplicacion.

  • jairo Sep 23, 2009

    Te felicito, la verdad es que viendo estos videos cualquiera se anima, con la facilidad con que lo explicas.
    Gracias.

  • Santiago Pineda Dec 29, 2009

    Esto esta… que pena la palabra, espero que la entiendan…”Brutal”, fenomenal, muy bueno, en la version “ext-3.1.0″ creo que hay problemas con la funcion fadeIn y fadeOut, parece que no se recuperara.

Leave a Reply







Updates

RSS

Subscribe to our feeds to receive updates of our newest posts and free tutorials.

Site search

Maybe we have what you need, would you like to search first?

Donations

Would you buy me a cup of coffee? I am sharing my knowledge and time with you, help this project grow. Thank you!