Encadenando con Mootools

Una gracia que tiene Mootools desde su versión 1.0 es el poder de crear cadenas de funciones, agregando lapsus de tiempo y de espera (delay) incluso. La class Chain es una manera muy astuta de enlistar secuencias de funciones en las que quieras ejecutar en un cierto orden sin tener que llamarlas todas al mismo tiempo. Luego, cada vez que termine de realizarse una función, la siguiente recién comenzará, lo que ayuda a controlar la memoria que estás utilizando para tu proyecto web. Su implementación es muy sencilla; basta con instanciar la class Chain y luego agregar como parámetro las funciones a la secuencia, de la siguiente manera:

$(elemento)
     .effects({duration: 1000, transition: Fx.Transitions.Quad.easeInOut})
     .start({
          ’width’: 800,
          ’height’: 410
     })
     .chain(function(){
          this.start({
               ’width’: 200,
               ’height’: 600
          })
     });

Ver ejemplo 1

En este ejemplo estoy modificando el tamaño de un #contenedor que tiene dentro una imagen del lápiz posicionado absolutamente; con ello logro que a medida que varían las dimensiones del #contenedor mediante Javascript, simula el movimiento del lápiz con física de movimiento incluída (otra gran gracia de Mootools). Dejé el borde del #contenedor visible para que se aprecie el cambio de tamaño.

Y el resto va por cuenta de la creatividad que le quieran dar, o mejor dicho, encadenar. Pueden realizar muchas acciones y como mencionaba, incluir pausas en lapsus de milisegundos antes de desencadenar la siguiente función, como en el siguiente ejemplo:

$(elemento)
     .effects({duration: 3000, transition: Fx.Transitions.Elastic.easeInOut})
     .start({
          ’width’: 600,
          height’: 210
     }).chain(function(){
          this.start({
               ’opacity’: 0.5
          })
     }).chain(function(){
          this.start({
               ’opacity’: 1
          })
     }).chain(function(){
          this.start.delay(500, this, {
               ’height’: 400,
               ’width’: 200
          })
     }).chain(function() {
          this.start({
               ’opacity’: 0.5,
               ’width’: 100,
               ’height’: 100
          });
     }).chain(function() {
          this.start.delay(1000, this, {
               ’opacity’: 1,
               ’width’: 1500,
               ’height’: 600
          })
     }).chain(function() {
          this.start({
               ’width’: 100,
               ’height’: 100
          })
     });

Ver ejemplo 2

Dejo claro que estoy utilizando la versión 1.11 de Mootools, que aún está mejor documentada que la más reciente 1.2 y con más ejemplos disponibles.

Links:

Sobre el Autor: Jorge Epuñan

Soy quien escribe en este sitio: diseñador gráfico de profesión, desarrollador web por preferencia y amante de la interacción humano-computador. Cuando no pienso en web, salgo a trotar por mis barrios en Santiago, Chile o me junto con amigos a un bar a conversar sobre nuevas tendencias y tecnologías. Twitter profesional y personal, además del Contacto.

  1. David

    jQuery tambien es “chainable”, pero de manera implicita; casi siempre las funciones te devuelven el objeto jQuery y puedes volver a utilizar sus funciones (una de las razones de porq me enamoré de este framwwork)

1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221| valtrex viagra where to buy melbourne buy eriacta from canada overnight cialis delivery usa cialis and viagra for sale buy online drug viagra pharmacy generic viagras names viagra overnight delivery usa generic nolvadex generic viagra 50mg for sale online viagra no precription get free viagra non prescription viagra online tadalafil prix where to purchace generic viagraAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription