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
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