Dipende davvero da come si intende fornire feedback e quanto velocemente il controller hardware può rispondere. C'è più di un modo per gestirlo e la correttezza della soluzione dipende molto da ciò che gli utenti si aspettano. In realtà, le soluzioni potenziali non si escludono a vicenda.
- Invia richiesta dopo n millisecondi di un valore stabile
- Invia richiesta ogni n millisecondi durante la modifica
- Invia richiesta dopo una modifica di valore di n
Per il caso nominale, 100ms si sente immediato per la maggior parte degli utenti. Tuttavia, se il tuo controller luce richiede 250 ms per rispondere, questo è davvero il tuo fattore limitante. Quel periodo di tempo non è male e si sente ancora reattivo.
Il problema che stai affrontando è in realtà comune ai cursori in generale. Poiché possono causare molti eventi, l'interfaccia utente può impantanarsi ascoltandoli, in particolare se ci sono altri aggiornamenti sullo schermo.
Dato che stai controllando un sistema di illuminazione, vorrei prendere alcune misure:
- Quanto velocemente risponde il sistema di illuminazione? (tempo di cambiamento visibile)
- Qual è la soglia del cambiamento che è effettivamente visibile? (quanti incrementi prima di notare il cambiamento dell'intensità della luce)
Considerate queste informazioni, potete elaborare un piano sufficiente in modo che il sistema di illuminazione si senta reattivo, ma non bombardate il vostro dispositivo con richieste più rapide di quanto possa realmente rispondere.
Il motivo per cui ho detto che dipende da come intendi fornire un feedback è perché le diverse soluzioni hanno un impatto sul modo in cui il tuo software viene percepito:
-
Rimbalzo (dopo n millisecondi di nessun cambiamento): non c'è feedback visibile finché l'utente non smette di giocare con il cursore
-
Limite di tempo (ogni n millisecondi durante il cambio): c'è un feedback continuo a una velocità che il sistema può gestire
-
Limitazione del valore (dopo la modifica del valore di n): il feedback ha una frequenza effettivamente percepibile
Se combini tutte e tre le opzioni, funzionerebbe in questo modo:
- Mentre il cursore viene controllato:
- Non inviamo aggiornamenti prima di "n" millisecondi
- Inviamo una richiesta solo se esiste un delta di "x" tra l'ultima richiesta e ora
- Quando il cursore è fermo:
- Inviamo un ultimo aggiornamento dopo "n" millisecondi di riposo
Ancora una volta, è importante sapere ora che le diverse opzioni influiscono sugli utenti e su cosa si aspettano.