Comunidad de diseño web y desarrollo en internet online

temporizador y vuelta a inicio

Citar            
MensajeEscrito el 11 Mar 2009 07:29 pm
Hola a todos.

Soy nuevo por aquí, ya que estoy empezando con esto del Flash. Estoy (intentando) hacer una aplicación tipo pantalla tactil y estoy algo atascado.

Mi idea es que el usuario navegue a traves de la aplicación y si está un cierto tiempo sin pulsar ningun botón, automáticamente vaya al inicio.
Lo he intentado con setInterval, con setTimeOut etc... pero no he encontrado nada. En el foro tampoco vi nada.

Lo más parecido que he conseguido es este código:

Código :

function ejecuta_animacion()
{
   _root.gotoAndPlay(1);
}

var temporizador:Number;
temporizador = setInterval(this, "ejecuta_animacion", 2*60*1000);

stop();


Este código lo tengo metido en cada uno de los stop() correspondientes a cada una de las pantallas.
Esto hace más o menos lo que quiero conseguir. El problema es que con ésto la aplicación se reinicia a los 2 minutos desde que se empieza la ejecución de la misma, no desde que llega al stop() de la vista en la que nos encontramos.
(no se si me explico bien, jeje)

Si hay alguien que pueda orientarme un poquillo se lo agradeceré mucho.
Gracias por adelantado!!!

Por minslay

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 10:18 pm
Hola yo encontre esto, espero te sirva. :D

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 12 Mar 2009 07:38 am
Muchas gracias por el enlace.

Voy a probar a adaptarlo a mi código, a ver si lo consigo.
gracias de nuevo!!!

Por minslay

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Mar 2009 04:04 pm
Con la respuesta del post anterior no conseguí que me funcionara, pero el tema del posicionamiento del ratón me ha dado nuevas ideas de por donde continuar. (Mi aplicación va a ir sobre pantalla tactil y no había pensado en el ratón)

Utilizando la lógica y mirando este otro post he montado este código:

Código :

// comprueba si el ratón se ha movido desde la última llamada o no
function controlaPosicion():Void
{
    // si se ha movido el ratón
   if (posicionMouse != _xmouse + _ymouse)
      {
      // ponemos el contador de nuevo a 0
      contador = 0;  
   }
   else
      {
      // añadimos un segundo al contador
      contador++;
      }
   // registramos la posición del ratón
    posicionMouse = _xmouse + _ymouse;
   
   if(contador >= 10)
      {
       _root.gotoAndPlay(1);
      }
}

/************************************************************************/

// posicionMouse tiene la situación del ratón
var posicionMouse:Number = _xmouse + _ymouse;
// inicializamos un contador a 0
var contador:Number = 0;
// cada segundo controlamos la posición del ratón mediante setInterval
intervalo = setInterval(this, "controlaPosicion", 1000);
stop();



Ésto me funciona para el caso en el que no se mueve el ratón (a los 10 segundos la aplicación salta al frame de inicio).

Mi aplicación tiene 4 "pantallas" y asignadas a cada una de ellas un frame con el ActionScript anterior. Si voy saltando de unas pantallas a otras (a través de unos botones) y luego me paro en una, vuelve al inicio, pero sin respetar los 10 segundos.(Igual tarda 3 segundos o 5)

Además supongo que haya que poner un clearInterval, pero no se por donde meterlo.

Alguien más en la sala puede ayudarme?

Un saludo y gracias a todos!!!

pero en el caso de mover el ratón

Por minslay

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Mar 2009 10:50 am
Hola, tu script detecta que si el mouse no se mueve durante 10 segundos regresas al frame 1; si colocas el mouse sobre un boton, practicamente el mouse no se esta moviendo, y a los 10 segundo ira al frame 1, en otras palabras, esta funcionando como se esperaba. solo que el script debe parecer una sola vez.

Te lo modifico para que puedas tener mas control sobre el y ademas para que detecte clicks

Código ActionScript :

stop();
// comprueba si el ratón se ha movido desde la última llamada o no
function controlaPosicion():Void
{
    // si se ha movido el ratón
   if (posicionMouse != _xmouse + _ymouse)
      {
      // ponemos el contador de nuevo a 0
      contador = 0;  
   }
   else
      {
      // añadimos un segundo al contador
      contador++;
      }
   // registramos la posición del ratón
    posicionMouse = _xmouse + _ymouse;
   
   if(contador >= 10)
      {
       _root.gotoAndPlay(1);
      }
}

//Comprobar tambien click del mouse.
Mouse.removeListener(this);
Mouse.addListener(this);
function onMouseDown() {
    contador = 0;
}


// posicionMouse tiene la situación del ratón
var posicionMouse:Number = _xmouse + _ymouse;
// inicializamos un contador a 0
var contador:Number = 0;
// cada segundo controlamos la posición del ratón mediante setInterval
function comprobar_Inactividad( si_no:Boolean )
{
   clearInterval( intervalo );
   if( si_no != false )
   {
     intervalo = setInterval(this, "controlaPosicion", 1000);
   }
}
comprobar_Inactividad();
//comprobar_Inactividad( false ); Para detenerlo cuando no necesites que se ejecute el contador.


Lo colocas una sola vez al incio de la pelicula y debera estar funcionando para todos los fotogramas de la linea de tiempo principal. Suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 15 Mar 2009 11:09 pm
muchas gracias por el código.

Al final tiré por otro lado y lo acabé solucionando. Pego aquí el código:

Código :

// tiempo_maximo_inactivo (en segundos)
var tiempo_maximo_inactivo = 120;
// tiempo_ultima_vez_activo (en milisegundos)
var tiempo_ultima_vez_activo = getTimer();

function comprobar() {
   //trace(tiempo_ultima_vez_activo);
   if (getTimer()-tiempo_ultima_vez_activo>tiempo_maximo_inactivo*1000) {
      // aquí las acciones cuando se supere el tiempo máximo inactivo
      _root.gotoAndPlay(1);
      // clearInterval(interval_idle);
   }
}

// cuando muevo el ratón, se inicia la vble
this.onMouseMove = function() {
   tiempo_ultima_vez_activo = getTimer();
};

// para no sobrecargar la película, evitamos el uso
// de un onEnterFrame y empleamos setInterval

interval_idle = setInterval(comprobar, 100);
stop();


muchas gracias de todas formas.

Un saludo!

Por minslay

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Mar 2009 04:50 am
:D te quedo bien.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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