Este sencillo código nos puede servir para detectar un tiempo de inactividad por parte del usuario dentro de nuestra película. Para por ejemplo, si el usuario está más de un minuto sin tocar el mouse, la película salte directamente a un fotograma con una animación y cuando el usuario vuelva a tocar el mouse la película vuelva a su estado normal. Algo como un salvapantallas.
Primero de todo crearemos una pelicula flash con dos fotogramas. En el primero colocaremos un MovieClip que contendrá toda la pelicula, y en el segundo colocaremos otro MovieClip que contendrá la animación de salvapantallas.
En las acciones del primer fotograma colocaremos el código que controlará si hay actividad por parte del usuario, en el momento en el que pase un cierto tiempo en el que no la hay, mandará la pelicula al segundo fotograma.
Código :
var posicionMouse:Number = _xmouse + _ymouse; intervalo = setInterval(this, "controlaPosicion", 2000); stop();
La variable posicionMouse guardará el valor de la posición del mouse en pantalla, y crearemos un intervalo que cada 2 segundos controle dicha posición.
Código :
function controlaPosicion():Void { if (posicionMouse != _xmouse + _ymouse) { } }
Esta función compara el valor de la variable posicionMouse (guardada hace 2 segundos) con el valor actual del mouse, si el valor es diferente con lo quiere decir el el usuario está activo, entonces ejecutaremos las siguientes acciones:
Código :
clearInterval(intervalo2); intervalo2 = setInterval(this, "salvapantallas", 58000); gotoAndStop(1);
Creamos un segundo intervalo, en este caso de 58 segundos (o el tiempo que queramos para que salte nuestro salvapantallas). Y colocamos un gotoAndStop que mantenga la pelicula en el primer fotograma.
¿Por qué eliminamos la referencia al intervalo antes de crearlo? porque de esta manera reseteamos el intervalo cada vez que ejecutamos la acción. Es decir: si cada 2 segundos comparamos los valores del mouse y son diferentes, reiniciamos el segundo intervalo haciendo que vuelva a empezar la cuenta desde cero con lo que nunca llegará a los 58 segundos y no ejecutará la acción "salvapantallas", En cambio en cuanto los valores del mouse coincidan por que no ha habido movimiento del ratón por parte del usuario este reinicio del intervalo no se ejecutará con lo que este si que llegará a los 58 segundos ejecutando la acción "salvapantallas".
Como última acción dentro de esta función colocaremos fuera del condicional, para que se ejecute siempre cada 2 segundos, una línea de código que nos actualice la variable de la posición del mouse.
Código :
posicionMouse = _xmouse + _ymouse;
La acción "salvapantallas" lo que hará es enviar la pelicula al segundo fotograma.
Código :
function salvapantallas():Void { gotoAndStop(2); }
Aun estando en el segundo fotograma el intervalo que comprueba el movimiento del mouse continua ejecutandose cada 2 segundos, con lo que al primer movimiento volverá a colocar la película en el primer fotograma.
Este sería el código completo, que iría en el primer fotograma:
Código :
function controlaPosicion():Void { if (posicionMouse != _xmouse + _ymouse) { clearInterval(intervalo2); intervalo2 = setInterval(this, "salvapantallas", 58000); gotoAndStop(1); } posicionMouse = _xmouse + _ymouse; } //———————————- function salvapantallas():Void { gotoAndStop(2); } //—————————- var posicionMouse:Number = _xmouse + _ymouse; intervalo = setInterval(this, "controlaPosicion", 2000); stop();
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Shanagan el 14 de Noviembre de 2006
Por Dani el 14 de Noviembre de 2006
Por Pley el 14 de Noviembre de 2006
Cool
Por Zguillez el 14 de Noviembre de 2006
Dani_blog :
Yo he utilizado esto en varios proyectos multimedia para exposición (es decir, un interactivo que se proyecta en una sala de exposiciones...)
Imaginate un visitante que está interactuando con una pelicula en una sala, cuando se canse y se vaya dejará el interactivo tal cual... queda feo que el próximo visitante que entre a la sala se encuentre con la proyección de una pantalla que ve tu a saber cual es... Con lo que con este codigo puedes detectar que nadie está usando ya la aplicación y mandarla a un fotograma con un audiovisual y un audio de ambiente (por ejemplo..) así el proximo visitante que entre en la sala verá un botino video y al tocar el mouse la aplicación saltará a la pantalla de inicio del interactivo...
Por Diego Pemberthy el 15 de Noviembre de 2006
Por tmfboy el 15 de Noviembre de 2006
Por mario oviedo el 15 de Diciembre de 2006
gracias
un abrazo desde chile
Por martin el 29 de Marzo de 2007
Por Luis Angel Cutipa el 19 de Mayo de 2013