Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Simular movimiento de noria

Estas en el tema de Simular movimiento de noria en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Estoy tratando de simular una noria. Seis imágenes haciendo un cículo. Pretendo que se desplacen todas a la vez, tal como lo ...
  #1 (permalink)  
Antiguo 20/04/2011, 12:45
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 16 años, 1 mes
Puntos: 3
Simular movimiento de noria

Hola a todos. Estoy tratando de simular una noria. Seis imágenes haciendo un cículo. Pretendo que se desplacen todas a la vez, tal como lo hace el segundero de un reloj, aunque tanto en el sentido de las agujas del reloj como en el contrario, pero no lo consigo.

Si podeis echarme una mano os lo agradezco.

Gracias de antemano.

Un saludo
  #2 (permalink)  
Antiguo 20/04/2011, 14:21
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Simular movimiento de noria

Si el problema es ir moviendo las imagenes puedes intentarlo asi:

Suponiendo que tienes las imagenes en Image1,Image2, etc hasta Image6
e incluyes un timer (Timer1) para el movimiento...

Código vb:
Ver original
  1. 'Creas una variable de coordenadas
  2.  
  3. Private Type Coordenadas
  4.   X As Long
  5.   Y As Long
  6. End Type
  7.  
  8. 'Luego creas un array de coordenadas. Pongamos que vamos a tener 12 posiciones, como las horas del reloj.
  9.  
  10. Dim Posicion(12) As Coordenadas
  11.  
  12. 'Y una variable que despues usaremos:
  13. Dim Barquilla As Integer
  14.  
  15. 'Y otra que será la dirección:
  16. Dim Direccion As Integer
  17.  
  18.  
  19. 'En el Load cargas las coordenadas:
  20.  
  21.  
  22. Private Sub Form_Load()
  23.  
  24.   Posicion(1).X=?????
  25.   Posicion(1).Y=?????
  26.   Posicion(2).X=?????
  27.   Posicion(2).Y=?????
  28.   Posicion(3).X=?????
  29.   Posicion(3).Y=?????
  30.   Posicion(4).X=?????
  31.   Posicion(4).Y=?????
  32. '  ... ETC, ETC
  33.  Posicion(12).X=?????
  34.   Posicion(12).Y=?????
  35.  
  36.   'Luego cargas una variable que será la posicion de la primera barquilla:
  37.  Barquilla = 1
  38.  
  39.   'Y La dirección hacia la derecha:
  40.  Direccion = 1
  41.   'para ir en la otra direccion asignamos el valor Direccion = -1
  42.  
  43.   'Activamos el Timer que ira moviendo las barquillas
  44.  Timer1.Interval=500 ' a 2 pasos por segundo p.ej.
  45.  Timer1.Enabled = True
  46.  
  47. End Sub
  48.  
  49. Private sub Timer1_Timer()
  50.   Dim Sitio as integer
  51.   barquilla=barquilla + direccion
  52.   if barquilla>12 then barquilla=barquilla-12
  53.   if barquilla<1 then barquilla=barquilla+12
  54.   image1.left=posicion(barquilla).x
  55.   image1.top=posicion(barquilla).y
  56.   sitio=barquilla+2
  57.   if sitio>12 then sitio=sitio-12
  58.   if sitio<1 then sitio=sitio+12
  59.   image2.left=posicion(sitio).x
  60.   image2.top=posicion(sitio).y
  61.   sitio=barquilla+4
  62.   if sitio>12 then sitio=sitio-12
  63.   if sitio<1 then sitio=sitio+12
  64.   image3.left=posicion(sitio).x
  65.   image3.top=posicion(sitio).y
  66.   sitio=barquilla+6
  67.   if sitio>12 then sitio=sitio-12
  68.   if sitio<1 then sitio=sitio+12
  69.   image4.left=posicion(sitio).x
  70.   image4.top=posicion(sitio).y
  71.   sitio=barquilla+8
  72.   if sitio>12 then sitio=sitio-12
  73.   if sitio<1 then sitio=sitio+12
  74.   image5.left=posicion(sitio).x
  75.   image5.top=posicion(sitio).y
  76.   sitio=barquilla+10
  77.   if sitio>12 then sitio=sitio-12
  78.   if sitio<1 then sitio=sitio+12
  79.   image6.left=posicion(sitio).x
  80.   image6.top=posicion(sitio).y
  81. End Sub

Me apuesto 2 chicles a que funciona.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 20/04/2011, 14:31
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Simular movimiento de noria

Gracias por responder. Lo pruebo y comento. Seguro que ganas los dos chicles, pero un código complicado en mis manos... puede pasar cualquier cosa.

Gracias
  #4 (permalink)  
Antiguo 20/04/2011, 14:56
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Simular movimiento de noria

¡Sí! Invitado a los chicles virtuales que quieras. Funcionó a la primera. Muchas gracias.
Un saludo
  #5 (permalink)  
Antiguo 27/04/2011, 06:31
 
Fecha de Ingreso: octubre-2008
Mensajes: 188
Antigüedad: 16 años, 1 mes
Puntos: 3
Otro forma más de siimular movimiento de noria

Encontré un código que trasteándolo un poco también
gira las 7 imágenes sin posicionarlas. Dejo el código por si le sirve a alguien.

Sólo hay que modicar el Radio para espaciar entre sí las imágenes.

Código:
 
Static Grado%
Dim Radio!, CPi!
Dim cx!, cy!
CPi = Atn(1) / 45 'Para pasar de Sexagesimales a radianes
Radio = IIf(Me.Height > Me.Width, Me.Width / 3, Me.Height / 3) 'Radio de giro
cx = Me.Width / 2 'Centro de giro en X
cy = Me.Height / 2 'Centro de giro en Y

If Grado = 360 Then
 Grado = 1
Else
 Grado = Grado + 1
End If

With Image1
 .Left = cx + Radio * Cos(Grado * CPi) - .Width / 2
 .Top = cy + Radio * Sin(Grado * CPi) - .Height / 2
End With

With Image2
 .Left = cx - Radio * Cos(Grado * CPi) - .Width / 2
 .Top = cy - Radio * Sin(Grado * CPi) - .Height / 2
End With

With Image3
 .Left = cx - Radio * Cos((Grado + 90) * CPi) - .Width / 2
 .Top = cy - Radio * Sin((Grado + 90) * CPi) - .Height / 2
End With

With Image4
 .Left = cx + Radio * Cos((Grado + 90) * CPi) - .Width / 2
 .Top = cy + Radio * Sin((Grado + 90) * CPi) - .Height / 2
End With

With Image5
 .Left = cx + Radio * Cos((Grado - 45) * CPi) - .Width / 2
 .Top = cy + Radio * Sin((Grado - 45) * CPi) - .Height / 2
End With

With Image6
 .Left = cx - Radio * Cos((Grado - 45) * CPi) - .Width / 2
 .Top = cy - Radio * Sin((Grado - 45) * CPi) - .Height / 2
End With

With Image7
 .Left = cx - Radio * Cos((Grado + 45) * CPi) - .Width / 2
 .Top = cy - Radio * Sin((Grado + 45) * CPi) - .Height / 2
End With

With Image8
 .Left = cx + Radio * Cos((Grado + 45) * CPi) - .Width / 2
 .Top = cy + Radio * Sin((Grado + 45) * CPi) - .Height / 2
End With
' Y así sucesivamente

No sé poner las funciones de Copiar en los mensajes, lo siento. Si alguien me lo explica se lo agradezco porque es muy cómodo de utlizar.

Un saludo

Última edición por truskyvb; 27/04/2011 a las 06:55

Etiquetas: movimiento, simular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:02.