Cristalab

                 ¿Quieres registrarte?

Detectar inactividad en una pelicula de Flash

Por: Zguillez
13 de Noviembre del 2006
6416 de clabLevel
Otros artículos de Zguillez
8,880 visitas

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();


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
gracias zguillez por tu tuto, cristalab es lo maximo!1!!!!
Por: Shanagan_blog
estaria bueno que el que hizo el tutorial u otros que comenten, recomienden en qué casos utitlizar esto
Por: Dani_blog
:D Si se complementa con unas pantallas .. facil que es un tutorial .. muy bueno.

:cool: Cool
Por: Pley

Dani_blog :

estaria bueno que el que hizo el tutorial u otros que comenten, recomienden en qué casos utitlizar esto

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: Zguillez
Cristal Lab, eres lo mejor,los amo.
Por: Diego Pemberthy_blog
bien muy util tu codigo , gracias
Por: tmfboy_blog
la raja el codigo compadre lo ocupe para esconder un menu que me ocupa gran parte del diseño


gracias
un abrazo desde chile
Por: mario oviedo_blog
que codigo se usa para poner el codigo de pelicula y que se mueva la figura con las teclas de direcciones
Por: martin_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.