Comunidad de diseño web y desarrollo en internet online

activar y manipular pausas

Citar            
MensajeEscrito el 20 Mar 2006 08:36 pm
Hola, busco una orientación para poder activar una pausa automática de x segundos para cada fotograma de la línea del tiempo, es decir, que la película corra deteniéndose durante x segundos en cada fotograma. ¿Alguien conoce algún action script apropiado o sabe dónde debo buscar?

Gracias de antemano.

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 20 Mar 2006 08:57 pm
busca en la ayuda de Flash por SetInterval, ahí viene explicado pasito por pasito

Por Elarios

192 de clabLevel



Genero:Masculino  

México, D.F.

firefox
Citar            
MensajeEscrito el 20 Mar 2006 09:35 pm
Gracias por tu ayuda Elarios. Habrás notado que soy novato en todo esto. Seguí tu orientación, pero hay un parámetro que no se que significa o cómo debe llenarse cuando:

setInterval( function(){ trace("intervalo llamado"); }, 1000 );

¿intervalo llamado?

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 20 Mar 2006 09:47 pm
mira este ejemplo:

Código :

endDate = new Date(2006,11,31,24,00,00,00)
timeLeft = (endDate - new Date());
var d = 24*60*60*1000;
var h = 60*60*1000;
var m = 60*1000;
var s = 1000;
dosDigitos = function( value ){
   return (value < 10 )?( "0" + value ):(value)
}
function calculate (factor){
   var result = Math.floor(timeLeft /factor)
   timeLeft -= (result * factor)
   return dosDigitos(result);
}
getTimeLeft = function (){
   timeLeft = (endDate - new Date());
   if( timeLeft > 0 ){
      dias = calculate(d)
      horas = calculate(h)
      minutos = calculate (m)
      segundos = dosDigitos(Math.floor(timeLeft/1000));
      campo_txt.text = dias + " Dias : " + horas + " Horas : " +  minutos + " Min : " + segundos + " Segs"
    }else{
      //se acab&oacute;
      campo_txt.text = "00 d&iacute;as, 00 : 00 : 00"
      clearInterval(id)
    }
}

/*stop();
this.createTextField("campo",1,0,0,0,0)
*/
this.campo_txt.autoSize= true;
id= setInterval(getTimeLeft,1000)

stop();


Sirve para un contador de regreso (saber cuanto tiempo falta para una fecha en específico). Al final con AS se dá la instrucción con setInterval de esperar un determinado tiempo (1000 ms) a mostrar la función del counter, en base a indicarle que la función "getTimeLeft" (la que sustituye a "Intervalo Llamado") después de esperar ese intervalo de tiempo. Así funciona :wink:

Por Elarios

192 de clabLevel



Genero:Masculino  

México, D.F.

firefox
Citar            
MensajeEscrito el 21 Mar 2006 01:05 am
Gracias de nuevo y perdón por el retraso, le estoy picando a todos lados sin hayar todavía lo que busco, que en realidad no se trata propiamente de un reloj o una cuenta marcha atrás como la que amablemente se me sugiere como ejemplo; en realidad lo que necesito es que todos los fotogramas avancen con una velocidad uniforme predeterminada cuyo incremento/decremento pueda manipular el usuario con botones, encontré hasta el momento esto:

setInterval(function(){gotoAndPlay(1)}, 5000);

donde (1) me regresa al primer fotograma--escribiendo (el número del siguiente fotograma) funciona, pero tendría el engorro de hacerlo en cada frame de toda la película--me parece que debería ser sencillo anotar (nextFrame) pero no sucede nada, la película se detiiene.

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Jul 2008 03:51 pm
Hola eoa :D

Esta funcion te puede servir, no la cree yo sino la tome de aca mismo de Clab.

Código :

var intervalId:Number;
var count:Number = 1;
var maxCount:Number = 3;//las veces que se repetira el codigo
var duration:Number = 3000;// los milisegundo que tardará en repetirse

function executeCallback():Void {
   trace("AVANCE");
   /* esto (el trace) es lo que se hará cada intervalo, aquí tu puedes poner lo que necesites,
   por ejemplo desplazar la _x de algo*/
   if (count>=maxCount) {
      //clearInterval(intervalId);
   }
   count++;
}

intervalId = setInterval(this, "executeCallback", duration);


Esto hace que cada 3 segundos...que seria esta parte

Código :

var duration:Number = 3000;// los milisegundo que tardará en repetirse


se ejecute lo que tengas dentro de la funcion...en este caso solo un trace.

Código :

function executeCallback():Void {
   trace("AVANCE");
   /* esto (el trace) es lo que se hará cada intervalo, aquí tu puedes poner lo que necesites,
   por ejemplo desplazar la _x de algo*/
   if (count>=maxCount) {
      //clearInterval(intervalId);
                count = 0;
   }
   count++;
}


y dentro de la funcion hay un "if" que hace lo que tu le indiques al llegar al final del conteo...

Código :

if (count>=maxCount) {
      //clearInterval(intervalId);
                count = 0;
   }


en este caso devuelve la variable "count" a cero con lo que la accion se repite indefinidamente, para que al llegar al final pare; solo tienes que habilitar...

Código :

//clearInterval(intervalId);


Esto lo podrias emplear poniendo dentro de la funcion "executeCallback()" la orden de nextFrame(); para adelantar cada 3 segundos, o de prevFrame(); para retroceder cada 3 segundos.

Por cierto si necesitas cambiar el tiempo de duracion de la accion, solo cambia el numero en:

Código :

var duration:Number = 3000;// los milisegundo que tardará en repetirse


Espero esto sea lo que necesitabas. :lol:

Por lucaz

37 de clabLevel



 

El Señor me amó y se entregó a sí mismo por mí

firefox
Citar            
MensajeEscrito el 17 Jul 2008 08:34 pm
Si utilizas esta función me parece que te va a resultar mejor que utilizar setInteval, pues tendrías que estar declarando en cada frame un intervalo diferente y además solamente se ejecutaría una vez.

Código :

function waitSeconds(movie:MovieClip, sec:Number):Void{
   
   movie.stop();
   
   var fps:Number = 12;
   var sum:Number = 0;
   
   this.onEnterFrame = function():Void{
      
      sum++;
      
      if(Math.floor(sum/fps) >= sec){
         
         delete this.onEnterFrame;
         
         movie.play();
         
      }
      
   }
   
}


La anterior función solamente debes mandarle el movie que quieres detener y pausar durante x segundos, después de este tiempo seguirá reproduciéndose, solamente debes aclararle la variable fps son los frames por segundo de tu película. Si quisieras utilizarla para controlar la línea de tiempo principal de tu película lo puedes hacer pues esta contiene las mismas propiedades de un movieClip, solamente debes poner en el frame que quieres que se pare y espere:

Código :

waitSeconds(this, 5);


En el ejemplo esperará 5 segundos, después seguirá reproduciendo la línea de tiempo.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Jul 2008 06:17 pm
Carambas, gracias. Eso está sumamente práctico

Por eoa

14 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Abr 2011 03:40 pm
muy buen aporte!!!

Por Luis Garcia Sierra

0 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.