Comunidad de diseño web y desarrollo en internet online

Detectar el NO movimiento del mouse

Citar            
MensajeEscrito el 10 Mar 2007 09:18 pm
Hola, necesito ayuda con la detección de movimiento del mouse.... he buscado por todos lados, pero solo dicen como detectar el movimiento y no como detectar el NO movimiento....

Lo que necesito es que haga "algo" (en este caso sera un contador) mientras que el mouse no se mueve... si este se mueve entonces hara otra cosa (en este caso reiniciar el contador)

La idea de usar esto es para hacer una especie de "protector de pantalla" de un SWF.... es decir, si el usuario deja de mover el mouse durante 5min. con el SWF abierto entonces sale una animacion.... si el usuario mueve el mouse la animacion se corta y continua en el programa.... si mueve el mouse el contador de los 5 min. se reinicia y hasta que llegue a 0 se va a la animacion....

Mi pregunta es como hacer que flash detecte la inactividad del mouse.... he visto como detectar la actividad del mouse, pero lo que quiero hacer es exactamente lo contrario.... si pudieran ayudarme se los agradeceria.... estoy desesperado... porque me queda poco tiempo para entregar el proyecto y no logo dar con esa funcion... :crap:

Espero puedan ayudarme.... :wink:

Salu2 :cool:

Por GTN1122

15 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 10 Mar 2007 10:08 pm
creo que deberías detectar el movimiento del mouse todo el tiempo y lanzar un interval para saber cuanto tiempo pasa sin movimiento

Código :

// esta funcion la llamas cuando detectas movimiento de mouse...
function seMovio(){
  segundos = 0;
  clearInterval(intervalo);
  intervalo = setInterval(cantidadSegundos, 1000);
}
var segundos:Number = 0;
function cantidadSegundos(){
  segundos ++;
  if (segundos >= 60){
      // ejecucion del protector de pantalla
  }
}


lo hice aqui rapidito, pero deberia funcionar.

Por micheloud

341 de clabLevel



 

Misiones, Argentina

firefox
Citar            
MensajeEscrito el 19 Oct 2009 06:41 pm

micheloud escribió:

creo que deberías detectar el movimiento del mouse todo el tiempo y lanzar un interval para saber cuanto tiempo pasa sin movimiento

Código :

// esta funcion la llamas cuando detectas movimiento de mouse...
function seMovio(){
  segundos = 0;
  clearInterval(intervalo);
  intervalo = setInterval(cantidadSegundos, 1000);
}
var segundos:Number = 0;
function cantidadSegundos(){
  segundos ++;
  if (segundos >= 60){
      // ejecucion del protector de pantalla
  }
}


lo hice aqui rapidito, pero deberia funcionar.


En ActionScript 3 la migración sería:

Código :

package  
{
   import flash.display.MovieClip;
   import flash.utils.Timer;
   import flash.events.TimerEvent;

   public class Main extends MovieClip
   {

      ////////////////////////////
      private var timer      :Timer;

      ////////////////////////////

      private function Main()
      {
         timer = new Timer(1000,2);  //solo defino la variable
         //Primer valor (1000 = 1 segundo) es el intervalo de conteo en milisegundos,
         //el segundo valor (2) es el numero de veces que se ejecuta el ciclo (en total dos segundos)

         stage.addEventListener(MouseEvent.MOUSE_MOVE,timerON,false,0,true); 
         //los ultimos tres valores son para el control de la chache
      }

      private function timerON(evt:MouseEvent):void
      {
         timer.addEventListener(TimerEvent.TIMER_COMPLETE, mouseInactive,false,0,true);
         //el evento es TIMER_COMPLETE, así cuando se cumpla el coclo completo (1000,2)
         //es decir dos segundos (o el que decidan, solo remplacen el 2 por el numero que quieran)

         timer.reset(); //si muevo el mouse antes de que finalice el conteo se reinicia
         timer.start(); //si no se a iniciado el conteo, se inicia
      }

      private function mouseInactive():void
      {
         /* Aqui va la accion que desean que ocurra si el mouse no se mueve */

         //igual recomiendo siempre liberar la cache eliminando el listener del ciclo así:
         timer.removeListener(TimerEvent.TIMER_COMPLETE,mouseInactive);
      }
   }
}


Recuerden que este es en AS3 y está en su versión orientada a objetos.
Si lo implementan en la linea del tiempo directamente sería así:

Código :

var timer:Timer = new Timer(1000,2); 
stage.addEventListener(MouseEvent.MOUSE_MOVE,timerON,false,0,true); 

function timerON(evt:MouseEvent):void
{
   timer.addEventListener(TimerEvent.TIMER_COMPLETE, mouseInactive,false,0,true);
   timer.reset();
   timer.start();
}
private function mouseInactive():void
{
   /* Aqui va la accion que desean que ocurra si el mouse no se mueve */
   timer.removeListener(TimerEvent.TIMER_COMPLETE,mouseInactive);
}

Por didok3003

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Dic 2009 07:14 pm
Seguramente ya habrás terminado tu proyecto, pero para algún usuario futuro que lea este post, hay una forma que yo armé que no lleva tanto código y es muy simple.

1. Armo un movievlip vacio en el escenario, le doy tantos fotogramas de duración como tiempo quiero que pase hasta que suceda algo mientras el mouse está inactivo. Por ejemplo si mi película está seteada a 30 fps. entonces 90 fotogramas hará que en 3 segundos pase algo si el mouse está quieto.

2. A ese mismo clip le agrego la siguiente función:

Código ActionScript :

onClipEvent (mouseMove) {
   this.gotoAndPlay(1);
}

De manera que al mover el mouse el MC vuelve al fotograma 1.

3. Si no se mueve el mouse, el MC se reproduce hasta el final, y entonces en el último fotograma de este MC agregamos la funcion que queremos que se reproduzaca, pasado el tiempo del mouse inactivo.

4. Listo!!

Por galko

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Dic 2009 07:21 pm
Aquí el ejemplo anterior!

http://so-comunicacion.com.ar/mouse-inactivo.fla

Por galko

27 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Dic 2009 08:52 pm
Gracias por las respuestas!!! ya pude solucionarlo!!!

Por didok3003

2 de clabLevel



 

firefox

 

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