Concetto di GUI per un editor grafico reattivo asincrono

2

Penso di poter descrivere questo problema in modo astratto, ma suppongo che sarà più facile capire quando lo descriverò in un ambiente reale.

Il problema

Immagina un editor grafico in cui è possibile inserire diversi oggetti grafici tramite trascinamento della selezione:

Oraquandolasciolìl'oggettomezzotrasparente.Attraversoalcunicalcolipesantisiottieneilseguenterisultato:

Fino ad ora eseguiamo il calcolo nel momento in cui l'utente rilascia il mouse in modo sincrono. Significa che aspetta di dire due secondi prima di poter usare il programma. Come ho già detto, questo è solo un esempio semplificato. Ha bisogno di molto più di questa interazione per avere un tempo di calcolo di due secondi, ma succede.

Ora abbiamo pensato che sarebbe stato carino eseguire l'intero calcolo in modo asincrono, in modo che l'utente utilizzasse il resto dell'applicazione durante questo periodo. E qui sta il problema L'utente potrebbe ora in questi due secondi innescare ulteriori gocce a suo piacimento.

Significachehalasciatocaderetreoggetti(a,b,c)mentrenemmenoilprimoèstatocalcolatocompletamente(A).

Soluzione1

L'utente può rilasciare gli oggetti a suo piacimento. Le modifiche vengono accumulate dopo che il primo calcolo è pronto.

Il problema con questa soluzione è che l'utente rilascia oggetti nello stato iniziale del foglio di lavoro, presumendo probabilmente che il primo oggetto (a) non sia mai stato inserito. Confonderà definitivamente l'utente.

Soluzione 2

Glioggettirilasciati(b,c)sonosemplicementeignorati.Ovviamentel'interfacciautentesarebbe"bloccata" con una sovrapposizione e il rilascio sarebbe impossibile.

Il problema con questa soluzione è che avrei bloccato di nuovo l'interfaccia utente solo ora con il mio overlay personalizzato.

La domanda

Hai riscontrato uno di questi problemi? Esiste una soluzione più intelligente rispetto a una qualsiasi delle due presentate?

    
posta Yggdrasil 19.02.2015 - 14:31
fonte

1 risposta

2

La soluzione 1 è quella preferita dalla maggior parte degli utenti, in base alla mia esperienza. Il problema che hai descritto, "l'utente lascia cadere oggetti sullo stato iniziale del foglio di lavoro presumendo probabilmente che il primo oggetto (a) non sia mai stato inserito", può essere mitigato con un segnaposto temporaneo visivo che indica che un oggetto è stato rilasciato, ma il suo stato è non ancora calcolato. Renderei la visualizzazione simile al risultato finale, ma con una differenza che indica che il risultato finale viene calcolato. Inoltre, disponi di un'altra visuale da qualche parte, in un'area di stato o come parte della visuale temporanea, con un'animazione piccola e discreta, che indica il verificarsi di calcoli.

Infine, lavorerei sodo per rendere questi calcoli più veloci. Forse c'è un problema con l'algoritmo, o forse hai bisogno di pre-recuperare alcuni dati in remoto. Più velocemente puoi accelerare i calcoli, più l'applicazione sarà visibile all'utente.

    
risposta data 19.02.2015 - 18:31
fonte

Leggi altre domande sui tag