Nei giochi interattivi si sfrutta quindi lo stesso principio alla base dei filmati. Si eseguono i fotogrammi del gioco in modo veloce uno sull’altro in modo da dare l’impressione del movimento. Per fare questo bisogna avere un timer che faccia eseguire il codice a un ritmo costante e sufficientemente elevato per dare alla sequenza di immagini statiche l’aspetto di un movimento.
Sub timer_esempio()
Dim F As Worksheet
Dim Stato As Range
Dim TIMEDELAY As Double
Dim StartTimer
Dim NSpace As Integer
Dim DIR As Integer
Dim testo As String
Set F = Worksheets(“Esempio”)
Set Stato = F.Cells(5, 5)
TIMEDELAY = 0.05 ‘velocità di movimento
DIR = 1
NSpace = 1
testo = “vado a destra -->”
Do While Stato.Value <> “”
DoEvents
NSpace = NSpace + DIR
F.Cells(10, 5).Value = Space(NSpace) & testo
If NSpace < 1 Then
DIR = -DIR
testo = “vado a destra -->”
End If
If NSpace > 80 Then
DIR = -DIR
testo = “<-- vado a sinistra”
End If
StartTimer = Timer
While Timer < StartTimer + TIMEDELAY
Wend
Loop
End Sub
Il codice viene eseguito fintanto che nella cella Stato è presente un valore qualunque (<>””). Il comando DoEvents permette all’utente di muovere il cursore e gestire il foglio di lavoro esattamente come se la macro non fosse in esecuzione. Ciò consente all’utente di modificare la condizione di Stato a suo piacimento. StartTimer = Timer While Timer < StartTimer + TIMEDELAY è semplicemente un ciclo di ritardo all’interno del ciclo principale. Questo ciclo fa in modo che il ciclo principale venga eseguito una volta ogni TIMEDELAY secondi. In questo caso il ciclo principale viene eseguito una volta ogni 0,05 secondi, cioè 20 volte al secondo. ![]()
| In questo articolo |