|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
[Java] Classe javax.swing.Timer: più veloce no???
Devo far scatenare un evento in maniera ripetuta a seconda della velocità che imposto dinamicamente grazie a una JSlider.
In pratica, la JSlider va da 1 a 30. Siccome voglio che a 1 vada piano e a 30 vada veloce, faccio l'inverso del getValue() della JSlider e ottengo l'effetto desiderato. Ora il problema è che se imposto la JSlider a 1, mi va piano ok.. ma da 2 a 30 la velocità, è si maggiore, ma qualsiasi valore metto fra 2 e 30 la velocità non cambia. Suppongo sia un problema dovuto al fatto che Timer non supporta delay che siano frazioni di millisecondi, quindi che io metta 1/2 o 1/30 non gli fa tanta differenza. anzi.. è uguale, visto che poi mi sa che approssima sempre a 1.... solo che mi viene il dubbio di come non approssimi a 0 scatenando una divByZero. Boh... Come faccio ad incrementare la velocità di timer in modo più sensibile? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
invece che fare 1/X perchè non fai, ad esempio, 31 - X che vale 1 quando X=30 e 30 quando X=1 ?
prova a vedere nella documentazione se Timer accetta anche i nanosecondi (di default usa solo millisecondi) |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Poi bisogna vedere come hai fatto il calcolo del tempo. Se hai fatto una divisione (come mi pare di capire), non vorrei che tu l'abbia fatta intera. Io farei così: se a 1 deve andare piano e a 30 andare veloce, si può fare la seguente divisione: 1000 / n. Così se n vale 1 hai 1 secondo e se n vale 30 hai 33 millisecondi. EDIT: È chiaro che con una divisione non hai una progressione lineare. Invece di una divisione si puoi anche fare m*(31-n) dove 'm' è un valore in millisecondi che preferisci.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 03-07-2007 alle 08:40. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Innanzi tutto grazie mille per le risposte.
Ho fatto 100/n, dopo aver provato anche un fattore 1000 e 10. Quello che vorrei (anche usando una JSlider da 0 a 100) sarebbe un aumento decisamente visibile di velocità, con una velocità altissima quando la barra è al massimo... |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
OK!!!
allora a posto.. va bene così. Grazie! Ciao ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:55.