Foros del Web » Programando para Internet » Javascript »

Tratando de implementar cola de efectos

Estas en el tema de Tratando de implementar cola de efectos en el foro de Javascript en Foros del Web. Buenas noches gente, estoy tratando de implementar una cola de efectos para mi "librería", pero estoy teniendo ciertos problemas. Por ejemplo con la función entrada: ...
  #1 (permalink)  
Antiguo 03/07/2011, 17:06
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Tratando de implementar cola de efectos

Buenas noches gente, estoy tratando de implementar una cola de efectos para mi "librería", pero estoy teniendo ciertos problemas. Por ejemplo con la función entrada:
Código Javascript:
Ver original
  1. entrada : function(tiempo, callback){
  2.    var este = this;
  3.    console.log('entrada', this.animado);
  4.    this.comprobarCola({ fn : este.entrada, args : [].slice.call(arguments) });
  5.    console.log('cola',this.cola);
  6.    
  7.    var trans = new JSPlus.Transicion({
  8.     'elem' : este,
  9.     'fn' : function(o){ este.opacity(o); }
  10.    },
  11.    {
  12.     'duracion' : JSPlus.Tiempos[tiempo] || tiempo,
  13.     'callback' : callback
  14.    });
  15.    
  16.    trans.inicio();
  17.    trans = null;
  18.    
  19.    return this;
  20.  }
Related:
Código Javascript:
Ver original
  1. // Colas de efectos
  2.   cola : [],
  3.   animado : false,
  4.   comprobarCola : function(opc){
  5.    this.animado && this.cola.push(opc);
  6.    return this;
  7.   },
  8.   gestionarCola : function(){
  9.    console.log(this.cola);
  10.    var efectoAct = this.cola.shift();
  11.    console.log(efectoAct);
  12.    efectoAct && efectoAct.fn.apply(this, efectoAct.args);
  13.    return this;
  14.   }
Si por ejemplo, hago:
Código:
P('#container').salida(1000).entrada(1000);
Es como si hiciera dos veces entrada.

Aquí una captura de los mensajes en la consola de Chrome:

El código se puede ver aquí.

No entiendo qué es lo que está mal, pero llevo desde el viernes comiéndome la cabeza
Espero que me podáis ayudar.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #2 (permalink)  
Antiguo 04/07/2011, 11:26
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Tratando de implementar cola de efectos

Haciendo pruebas, resulta que:
Código Javascript:
Ver original
  1. var elem = P('#container');
  2. elem.cola.push({ fn : elem.salida, args : [1000] });
  3. elem.cola.push({ fn : elem.entrada, args : [1000] });
  4. elem.gestionarCola();
funciona perfectamente, así que ahora entiendo aun menos por qué no funciona
Código:
P('#container').salida(1000).entrada(1000);
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 04/07/2011, 12:02
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Tratando de implementar cola de efectos

Mi estado de ánimo ahora mismo:

Y pensar que he perdido casi 4 días con esto
El código era correcto, lo que pasaba es que después de comprobar si estaba animado y añadir el efecto a la cola, seguía ejecutándose, así que hacía cosas muy raras
Lo solucioné así:
Código Javascript:
Ver original
  1. // ...
  2. if(this.comprobarCola({ fn : este.entrada, args : [].slice.call(arguments) })){
  3.  return this; // Si está animado, cortamos le ejecución
  4. }
  5. // ...
  6. comprobarCola : function(opc){
  7.    this.animado && this.cola.push(opc);
  8.    return this.animado;
  9.   },
Darle las gracias a @Aijoona, que aunque por Twitter, ha estado ayudándome a solucionar esto (), y a aquellos que aunque no han contestado, se han molestado en leer el tema.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: cola, efectos, implementar
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:54.