Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - immagini in movimento
Forum - Visual Basic 6 - immagini in movimento

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Adler94 (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/06/2010

Segnala al moderatore
Postato alle 16:55
Giovedì, 24/06/2010
allora io ho usato questo codice per fare in modo che l'immagine si muovesse da sinitra verso destra

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. Dim a As Integer
  3. For a = 1 To 10
  4. Image1.Left = Image1.Left - Image1.Width \ -1
  5. Next a
  6. End Sub



solo che invece di muoversi, l'immagine appare direttamente spostata verso destra....
dove ho sbagliato?

Ultima modifica effettuata da Adler94 il 24/06/2010 alle 17:03
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 18:01
Giovedì, 24/06/2010
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. Dim a As Integer
  3. For a = 1 To 10
  4. Image1.Left = Image1.Left - Image1.Width \ -1
  5. DoEvents ' questo ti fà vedere gli spostamenti
  6. ' però la velocità è altissima
  7. ' quì devi mettere un ritardo altrimenti non hai il tempo di vedere lo spostamento, l'immagine è velocissima
  8. Next a
  9. End Sub



Ultima modifica effettuata da Alfonso il 24/06/2010 alle 18:38
PM Quote
Avatar
Adler94 (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/06/2010

Segnala al moderatore
Postato alle 20:35
Giovedì, 24/06/2010
Grazie alfonso ma per il ritardo è un altro problema.....
io ho provato a usare il comando sleep così:

Codice sorgente - presumibilmente VB.NET

  1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  2. Private Sub Form_Load()
  3. Dim a As Integer
  4. For a = 1 To 10
  5. Image1.Left = Image1.Left - Image1.Width \ -1
  6. DoEvents
  7. Sleep (100)
  8. Next a
  9. End Sub



solo che se scrivo kernel32 tra virgolette, dopo 100 millisecondi si avvia il progetto, mentre io dovrei mettere una pausa tra i cicli.....

Ultima modifica effettuata da Adler94 il 24/06/2010 alle 20:44
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 20:41
Giovedì, 24/06/2010
Se quella che hai illustrato è l'unica routine che muove controlli immagini, va bene una sleep.
Se fai movimenti più complessi o muovi più controlli, normalmente si usa un controllo timer che ad ogni tick incrementa una variabile che è il valore da attribuire ad image.left ed eventualmente ad image.top o ad altri controlli immagine.

Edit:
Scusa ma ho inviato mentre tu stavi editando.
Non capisco cosa intendi con:
"solo che se scrivo kernel32 tra virgolette, dopo 100 millisecondi si avvia il progetto"

Ultima modifica effettuata da Alfonso il 24/06/2010 alle 20:57
PM Quote
Avatar
Adler94 (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/06/2010

Segnala al moderatore
Postato alle 20:58
Giovedì, 24/06/2010
scusa alfonso, ho modificato il messaggio precedente credendo che non l'avessi ancora letto...
comunque come detto sopra, usando questo codice:
Codice sorgente - presumibilmente VB.NET

  1. Private  Declare Sub Sleep Lib "kernel32" (ByVal  dwMilliseconds As Long)
  2. Private Sub Form_Load()
  3. Dim a As Integer
  4. For a = 1 To 10
  5. Image1.Left = Image1.Left - Image1.Width \ -1
  6. DoEvents
  7. Sleep (100)
  8. Next a
  9. End Sub



caricando la libreria kernel32 dopo 100 millisecondi mi si avvia il progetto mentre io devo mettere una pausa tra i cicli

Ultima modifica effettuata da Adler94 il 24/06/2010 alle 21:14
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 21:10
Giovedì, 24/06/2010
Testo quotato

caricando la libreria kernel32 dopo 100 millisecondi mi si avvia il progetto mentre io devo mettere una pausa tra i cicli



Continuo a non capire perchè fai questa affermazione. Come fai a valutare un ritardo di 100 millisecondi nell'apertura del programma?
Ma dopo che si è avviato vedi muoversi l'immagine?
E quando viene mostrata a video la form?

PM Quote
Avatar
Adler94 (Normal User)
Newbie


Messaggi: 10
Iscritto: 24/06/2010

Segnala al moderatore
Postato alle 21:16
Giovedì, 24/06/2010
scusami cerco di spiegarmi meglio:


io ho capito che se nella riga
Codice sorgente - presumibilmente VB.NET

  1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


sta scritto tra virgolette kernel32(cioè se carico la libreria kernel32)
quando metto lo sleep non mette una pausa tra i cicli, ma blocca tutto il sistema per un determinato periodo (in questo caso 100 millisecondi)

questo e quello che ho capito io e comunque io non sono molto esperto in visual basic
ho iniziato da poco e con le API ci so fare ancora poco
quindi correggimi si ho sbagliato (quasi sicuro di si:) )

Ultima modifica effettuata da Adler94 il 24/06/2010 alle 21:17
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 21:17
Giovedì, 24/06/2010
Ti prego di non editare più i messaggi che hai già scritto, se non non ne veniamo più fuori da questo guazzabuglio.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 21:23
Giovedì, 24/06/2010
Forse vedi solo l'immagine finale perchè non mostri il form nel suo stato iniziale
Inserisci prima del for

Private Sub Form_Load()

    Me.Show

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo