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
Articoli simili in ABC, Blogger, Flash, Sviluppo, Tutorial
tag abilitati: <code> </code> | <a href=""> </a> | <b> </b> | <i> </i>
Iscriviti ai Feed RSS dei commenti di questo articolo

.: DoC :.
19 novembre 2007
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
Julius
19 novembre 2007
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
.: DoC :.
20 novembre 2007
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
Julius
20 novembre 2007
la seconda
.: DoC :.
20 novembre 2007
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
.: DoC :.
20 novembre 2007
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
.: DoC :.
26 novembre 2007
bha non riesco proprio a farla sparire
Julius
26 novembre 2007
Non è un problema quella scritta, la vedi solo in progettazione..
se poi ti da tanto fastidio cerca un “trace” nel codice
Angelo
21 giugno 2010
Complimenti, era proprio ciò che stavo cercando, ma sapete come si può fare in php? Sapete se si può fare? Avete dei suggerimenti?
Grazie