Timer in Vb.net

mercoledì 11 gennaio 2012 - 19.26
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows Vista  |  Visual Studio 2010

xyzsurf Profilo | Newbie

Salve a tutti.
Vorrei rifarmi alla vostra esperienza per un problemino credo semplice ai molti esperti ...
devo animare una pallina ... ho creato le 4 immagini con le rotazioni ciascuna di 90 gradi. Le ho importate nelle risorse(a proposito ma come si elima un file dalle risorse?). Ad ogni tot di tempo devo cambiare immagine e spostare la posizione della stessa(per l'appunto un animazione).
Con un ciclo for next l'animazione è esageratamente veloce e non si vede nulla.
Con un timer va bene, ma non riesco a richiamarlo da un altra sub.

In realtà non so usare il timer e mi chiedo cosa devo utilizzare per far scorrere un immagina che cambia da un punto all'altro dello schermo sulla stessa riga.

Se qualcuno può aoitarmi, sperando di essermi spiegato.
By

Jeremy Profilo | Guru

Ciao Aniello.
Prova con questo codice:
Private tmr As Timer Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load tmr = New Timer AddHandler tmr.Tick, AddressOf tmr_tick tmr.Interval = 1000 tmr.Enabled = True tmr.Start() End Sub Private Sub tmr_tick(sender As Object, e As EventArgs) 'TODO: Codice di getione delle palline End Sub
Facci sapere....
Ciao

xyzsurf Profilo | Newbie

grazie gentilissimo ... provo il tutto e ti faccio sapere. Ciao!

zami Profilo | Junior Member

Ciao,

Il sistema che ti ha indicato Jeremy è certamente efficace.

Se preferisci non usare i timer, puoi fare anche in questo modo:
For Each ... 'Codice di gestione Threading.Thread.Sleep(1000) Next



"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

zirobyte75 Profilo | Newbie

ome già ti ho indicato ... (certo l'immagine non cambia ma basta poco per sostituirla... se non ci riesci chiedimi).

Ciao: il tuo problema è molto semplice da risolvere. Inserisci un TIMER, imposta INTERVAL su 25 e ENABLED su TRUE.
in questo esempio basterà che installi un componente aggiuntivo di pochi mb della microsoft(http://msdn.microsoft.com/en-us/vstudio/bb735936.aspx)


e poi gestisci l'evento tick del timer e dichiara 2 variabili boleana.
ti allego il codice:

Public Class Form1
Dim MuoviDestra As Boolean 'Variabile per controllare il movimento sull'asse orizontale(Sx/Dx)
Dim MuoviSu As Boolean 'Variabile per controllare il movimento sull'asse verticale(Su/Giù)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'ad ogni evento Tick del Timer1, muove la palla e ne verifica la posizione impostando la direzione
If MuoviDestra = True Then
'sposta a dx
OvalShape1.Left += 10
Else
'sposta a sx
OvalShape1.Left -= 10
End If
If MuoviSu = True Then
'sposta giù
OvalShape1.Top -= 10
Else
'sposta su
OvalShape1.Top += 10
End If
'VERIFICA CONDIZIONE: se supera margine sx, cambia direzione
If OvalShape1.Left <= Me.ClientRectangle.Left Then
MuoviDestra = True
End If
'VERIFICA CONDIZIONE: se supera margine dx, cambia direzione
If OvalShape1.Left + OvalShape1.Width >= Me.ClientRectangle.Right Then
MuoviDestra = False
End If
'VERIFICA CONDIZIONE: se supera il margine superiore, cambia direzione
If OvalShape1.Top <= Me.ClientRectangle.Top Then
MuoviSu = False
End If
'VERIFICA CONDIZIONE: se supera il margine inferiore, cambia direzione
If OvalShape1.Top + OvalShape1.Height >= Me.ClientRectangle.Bottom Then
MuoviSu = True
End If
End Sub
End Class

ricorda che di solito basic.net ha problemi per il codice copia incola nella gestione degli eventi, quindi la sub del Private Sub Timer1_Tick ti conviene rigenerarla cliccando due volte sul controllo.

SE HAI DUBBI, GUARDA UN MIO VIDEO SULL'ARGOMENTO: ecco il link
http://www.youtube.com/watch?v=Sdx95hNweXM&feature=plcp&context=C3d04438UDOEgsToPDskKp3Sux3AaHh-IhZ41bMksI

ciao
se riesci a pensarlo puoi anche realizzarlo!
http://www.youtube.com/user/zirobyte75

zirobyte75 Profilo | Newbie

Inserisci una PictureBox, due Button e un Timer.

Clicca sulla freccetta della PictureBox1, seleziona importando l'immagine del frame che desideri inserire(ti consiglio di importarli tutti nello stesso momento).
Imposta SIZEMODE su Atosize e BACKCOLOR su web e successivamente Transparent.

Modifica la proprietà TEXT del Button1 su Start e del Button2 su Stop.

Genera per entrambi i controlli l'evento CLICK(basterà che clicchi sui controlli due volte). Nel gestore eventi del Button1_Click inserisci

Timer1.Enabled = True

mentre sul Button2_click
Timer1.Enabled = False

Con questi due pulsanti potrai far partire e fermare l'animazione.

Imposta la proprietà INTERVAL del Timer su 35(fai attenzione che la proprietà ENABLED rimanga su FALSE)

Ora viene il bello ...

subito dopo Class Form1 dimensiona una variabile

Dim Frame As Int16

Questa variabile dovrà contenere un numero associato all'immagine visualizzata all'interno della PictureBox1 ...in parole povere, per ogni immagine che hai importato, le associ un numero, che corrisponde il numero dello sprite che intendi visualizzare.

Ora crea una Procedura
Private Sub QualeFrameVisualizzare()

al suo interno verifica quale frame deve essere visualizzato. Per ciascun Frame(riporto l'esempio per soli due ... il nome deve corrispondere al file che hai importato prima attraverso la PictureBox1)


Select Case Frame Case 1 Me.PictureBox1.Image = My.Resources.Frame1 Case 2 Me.PictureBox1.Image = My.Resources.Frame1 End Select

Crea un altra Procedura
Private Sub MuoviFrame()

al suo interno ...

PictureBox1.left += 5 Frame += 1 'Al prossimo ciclo del timer visualizza un altro FRAME

Ora genera l'evento TICK del Timer1.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Se desideri vederne un esempio scarica il sorgente(animazione) ... dal mio sito sezione download http://www.zirobyte.altervista.org/
Per qualcosa di più serio, vedi una lezione e scarica il sorgente su come animare Mario Bros e controllarne i movimenti ... http://www.youtube.com/user/zirobyte75

CIAO!
se riesci a pensarlo puoi anche realizzarlo!
http://www.youtube.com/user/zirobyte75
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5