Intercettare Inattività dell’USER

Oggi vedremo come intercettare l’inattività dell’User qualora non dia più segni di attività.

Con una semplice classe potremo tenere sotto controllo i movimenti del mouse dell’User, in questo modo potremo gestire le varie azioni da compiere.

Queste sono le linee di codice da inserire nel progetto .fla sul primo fotogramma

// Inserire il tempo di attesa 1000 equivale a un secondo di inattività
var idleWatcher = new IdleUserWatcher(2000);
// Registro un oggetto per ricevere la notifica su onUserIdle()
idleWatcher.addListener(_root);
//Avremo un ritorno quando verrà avviata l'inattività dell user
trace(idleWatcher.isActive);
function onUserIdle() {
trace("User inattivo!");
}

Ecco la classe IdleUserWatche.as

class IdleUserWatcher {
//L'user è attivo?
private var __isActive:Boolean = false;
// ID interval
private var intervalID:Number;
// Quanto tempo aspettare prima di chiamare USER "inattivo"
private var idleTime:Number = 1000;
// Lista degli oggetti listening
private var listeners:Array;
// Solo se è attivo
public function get isActive():Boolean {
return __isActive;
}
public function IdleUserWatcher(idleTime:Number) {
if (idleTime != undefined) {
this.idleTime = idleTime;
}
Mouse.addListener(this);
Key.addListener(this);
listeners = new Array();
}
/* Aggiungi Listener alle liste listener */
public function addListener(listener:Object):Boolean {
for (var i:Number = 0; i<listeners.length; i++) {
if (listeners[i] == listener) {
return false;
}
}
listeners.push(listener);
return true;
}
/* Rimuovi Listener alle liste listener */
public function removeListener(listener:Object):Boolean {
for (var i:Number = 0; i<listeners.length; i++) {
if (listeners[i] == listener) {
listeners.splice(i, 1);
return true;
}
}
return false;
}
/* Eventi */
private function onKeyDown():Void {
setIdleInterval();
}
private function onMouseMove():Void {
setIdleInterval();
}
/* Metodi USER attivo*/
private function setIdleInterval() {
trace("User attivo!");
this.__isActive = true;
clearInterval(this.intervalID);
this.intervalID = setInterval(this, "broadcastIdle", this.idleTime, this);
}
private function broadcastIdle(watcher:IdleUserWatcher):Void {
watcher.__isActive = false;
for (var i:Number = 0; i<listeners.length; i++) {
listeners[i].onUserIdle();
}
clearInterval(watcher.intervalID);
}
}

Scarica il sorgente
Guarda il Tutorial

Annunci

0 thoughts on “Intercettare Inattività dell’USER

  1. Ciao Julius mi chiedevo una cosa… al posto di far comparire la scritta “USER ATTIVO ” è possibile far caricare un swf esterno? se si come faccio ad inserirlo?

    Grazie mille

  2. Nel codice che ho inserito nell’articolo a linea 48 vedrai /* Metodi USER attivo*/ li devi inserire le azioni da compiere quando l’use è attivo userai il loadMovie per caricare un swf esterno

  3. ok perciò dopo: /* Metodi USER attivo*/ metto

    loadMovie(“xxx.swf”,”xxx”);

    oppure lo devo mettere dopo :

    /* Metodi USER attivo*/
    private function setIdleInterval() {
    loadMovie(“xxx.swf”,”xxx”);
    }

    ciao ciao e scusa se ti faccio perdere tempo 🙂

  4. Perfetto!!!!! SEI UN MITO! 🙂 🙂 🙂

    non so proprio come ringraziarti!

    sei meglio di una guida… a furia di leggere commenti sto cominciando a capire come funziona flash!

    Ciao ciao

  5. dimenticavo , solo un ultima piccola cosa… come mai nel pannello degli errori mi compare una scritta “false” anche se l’animazione funziona alla perfezione?

    Grazie mille

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...