Foros del Web » Creando para Internet » Flash y Actionscript »

Retrasar acción en bucle

Estas en el tema de Retrasar acción en bucle en el foro de Flash y Actionscript en Foros del Web. Hola, estoy tratando de hacer un menú desplegable y de momento me está saliendo pero tengo una duda. Podríais decirme si se puede hacer que ...
  #1 (permalink)  
Antiguo 27/04/2009, 06:03
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Retrasar acción en bucle

Hola,

estoy tratando de hacer un menú desplegable y de momento me está saliendo pero tengo una duda. Podríais decirme si se puede hacer que tras mover el primer clip del menú, el bucle espere medio segundo para mover el siguiente clip. La idea es que los elementos del menú no se muevan a la vez, sino que haya un pequeño retraso entre uno y otro. Espero haberme explicado bien y que sea posible.

Este es mi código:

Código actionscript:
Ver original
  1. import mx.transitions.Tween;
  2. import mx.transitions.easing.*;
  3.  
  4. var clipsArray:Array = Array(mainopt0, mainopt1, mainopt2);
  5. var posArray:Array = Array(76, 118, 153);
  6.  
  7. mainopt0.onRelease = function (){
  8.     var i:Number = 1;
  9.     for ( i ; i <= 2; i++) {
  10.      var aumento = posArray[i] + 100;
  11.      var miTween:Tween = new
  12.      new Tween(clipsArray[i], "_y", Regular.easeIn, posArray[i], aumento, 1, true);
  13.     }
  14. }

Muchas gracias.
  #2 (permalink)  
Antiguo 27/04/2009, 06:22
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 4 meses
Puntos: 51
Respuesta: Retrasar acción en bucle

a ver si esto te ayuda

Código PHP:
import mx.transitions.Tween;
import mx.transitions.easing.*;
 
var 
clipsArray:Array = Array(mainopt0mainopt1mainopt2);
var 
posArray:Array = Array(76118153);
var 
i:Number 0
var 
intervalId:Number;

mainopt0.onRelease = function (){
       
intervalId=setInterval(_root,"retraso"100)

}
function 
retraso(){
    
i++
    var 
aumento posArray[i] + 100;
    var 
miTween:Tween = new Tween(clipsArray[i], "_y"Regular.easeInposArray[i], aumento1true);
    if(
i>2){
        
clearInterval(intervalId);
        
i=0
    
}

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #3 (permalink)  
Antiguo 28/04/2009, 02:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Retrasar acción en bucle

Muchas gracias Lynxcraft, no veía como podía hacerlo. He hecho un par de cambios y esto es lo que llevo de momento.

Código actionscript:
Ver original
  1. //importo la clase Tween
  2. import mx.transitions.Tween;
  3. import mx.transitions.easing.*;
  4. //Creo array con nombres de clips  
  5. var clipsArray:Array = Array(mainopt0, mainopt1, mainopt2);
  6. //Creo array con la posicion _y de los clips + la mitad de su altura
  7. var posArray:Array = Array(80, 110, 140);  
  8. var intervalId:Number;
  9. //Variable cuyo valor es el número de clips existentes
  10. var i:Number = 3;
  11.  
  12. /* ACCIONES DE CLIPS */
  13.  
  14. mainopt0.onRelease = function (){
  15.         //Variable que indica donde acabar el intervalo
  16.         _global.e = 1;
  17.         //Variable que indica cuanto desplazar los clips inferiores
  18.         _global.espacio = 50;
  19.         intervalId=setInterval(_root,"retraso", 30);
  20. }
  21.  
  22. mainopt1.onRelease = function (){
  23.         _global.e = 2;
  24.         _global.espacio = 100;
  25.         intervalId=setInterval(_root,"retraso", 30);
  26. }
  27.  
  28. mainopt2.onRelease = function (){
  29.         _global.e = 3;
  30.         _global.espacio = 100;
  31.         intervalId=setInterval(_root,"retraso", 30);
  32. }
  33.  
  34. //Función que desplaza cada clip
  35. function retraso(){
  36.     i--
  37.     var aumento = posArray[i] + _global.espacio;
  38.     var miTween:Tween = new Tween(clipsArray[i], "_y", Regular.easeIn, posArray[i], aumento, 0.9, true);
  39.     if(i<=e){
  40.         clearInterval(intervalId);  
  41.     }
  42. }

No sé si interesará a alguien pero tengo pensado ponerlo aquí para quien quiera usarlo cuando lo acabe.
  #4 (permalink)  
Antiguo 28/04/2009, 04:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 163
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Retrasar acción en bucle

Hola de nuevo, me ha surgido otra complicación que no comprendo. Este código hace que al pulsar sobre un clip bajen los clips que están por debajo de él y al volver a pulsar sobre cualquiera de ellos vuelvan todos a su posición inicial, y así ocurre con la excepción del que está inmediatamente debajo del botón que pulsé primeramente. Ese no se mueve. ¿Sabéis que puede estar pasando?

YA LO RESOLVÍ, TENÍA QUE MOVER EL INCREMENTO DE i. Ya lo corregí en el código.

Gracias.

Código PHP:
//importo la clase Tween
import mx.transitions.Tween
import mx.transitions.easing.*; 
//Creo array con nombres de clips  
var clipsArray:Array = Array(mainopt0mainopt1mainopt2mainopt3mainopt4); 
//Creo array con la posicion _y de los clips + la mitad de su altura
var posArray:Array = Array(80110140170200);   
var 
intervalId:Number;
//Variable cuyo valor es el número de clips existentes
_global.5
//Variable que indica si hay visible un submenú
_global.activo false;

/* ACCIONES DE CLIPS */

mainopt0.onRelease = function (){
    
_global.1;
    if(
_global.activo){
        
intervalId=setInterval(_root,"recolocar"30);
        
_global.activo false;
    }else{
           
intervalId=setInterval(_root,"retraso"30);
        
_global.activo true;
        
_global.espacio 100;
    }


mainopt1.onRelease = function (){ 
    
_global.2;
    if(
_global.activo){
        
intervalId=setInterval(_root,"recolocar"30);
        
_global.activo false;
    }else{
        
intervalId=setInterval(_root,"retraso"30);
        
_global.activo true;
        
_global.espacio 100;
    }


mainopt2.onRelease = function (){ 
    
_global.3;
    if(
_global.activo){
        
intervalId=setInterval(_root,"recolocar"30);
        
_global.activo false;
    }else{
        
intervalId=setInterval(_root,"retraso"30);
        
_global.activo true;
        
_global.espacio 100;
    }


mainopt3.onRelease = function (){ 
    
_global.4;
    if(
_global.activo){
        
intervalId=setInterval(_root,"recolocar"30);
        
_global.activo false;
    }else{
        
intervalId=setInterval(_root,"retraso"30);
        
_global.activo true;
        
_global.espacio 100;
    }


mainopt4.onRelease = function (){ 
    if(
_global.activo){
        
intervalId=setInterval(_root,"recolocar"30);
        
_global.activo false;
    }else{
        
_global.activo false;
    }


//Función que desplaza cada clip
function retraso(){ 
    
i-- 
    var 
aumento posArray[i] + _global.espacio
    var 
miTween:Tween = new Tween(clipsArray[i], "_y"Regular.easeInposArray[i], aumento0.9true); 
    if(
i<=e){ 
        
clearInterval(intervalId);  
        
e;
    } 
}  

//Función que recoloca cada clip
function recolocar(){ 
    var 
posActual posArray[i] + _global.espacio;
    var 
aumento =  posActual _global.espacio;
    var 
miTween:Tween = new Tween(clipsArray[i], "_y"Regular.easeInposActualaumento0.9true); 
    
i++ 
    if(
i>4){ 
        
clearInterval(intervalId);
    } 


Última edición por Jamlet; 28/04/2009 a las 04:37
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 08:13.