Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Efecto Persiana
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Efecto Persiana 
 
Hola, estaba intentando hacer bajar el formulario con un poco de aceleración para quitarle "robotismo" a su caída, pero aunque sale casi siempre bien, a veces solo me muestra una línea finísima arriba de la pantalla sin dejar caer el formulario.
¿Qué puede fallar en el siguiente código para que solo funcione a veces?

Public Sub Form_Open()

Dim t As Float
Dim g As Float
Dim v As Float
Dim ancho As Float
Dim alto As Float

Me.y = 10
Me.x = 80
ancho = Screen.Width / 3
alto = Screen.Height / 3
Me.Height = 1
Me.Width = ancho

Me.Show

g = 10
t = 0

While Me.Height < alto
  t = t + 0.1
  Wait 0.01
  Me.height = Me.Height + (1 / 2) * g * t ^ 2
Wend

End
 

 



 
última edición por guadafan el Domingo, 16 Diciembre 2012, 18:07; editado 1 vez 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
Hola guadafan.

Prueba esto:

Private alto As Integer
Private temporizador As New Timer As "tiempo"

Public Sub Form_Open()

Dim ancho As Integer
'temporizador = New Timer As "tiempo"

ancho = Screen.Width / 3
alto = Screen.Height / 3

With Me  
  .y = 100
  .x = 100
  .Height = 1
  .Width = ancho      
End With
temporizador.Delay = 50
temporizador.Start

End

Public Sub tiempo_Timer()
    If Me.Height < alto Then
      Inc Me.Height
    Else
      temporizador.Stop
    Endif
End
 


El objeto temporizador puedes hacerlo local.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 17 Diciembre 2012, 10:12; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
No entiendo muy bien lo que has hecho. ¿El temporizador marca el ritmo de bajada? ¿Cómo podría variar su velocidad gradualmente para acelerarlo para que hiciera más una caída que una bajada a velocidad constante?
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
guadafan escribió: [Ver mensaje]
No entiendo muy bien lo que has hecho. ¿El temporizador marca el ritmo de bajada?  


Si.A menor tiempo,  baja mas rápidamente. Si el valor de la propiedad delay es pequeño  es demasiado brusca la bajada,
hay que encontrar  un valor adecuado.

guadafan escribió: [Ver mensaje]
¿Cómo podría variar su velocidad gradualmente para acelerarlo para que hiciera más una caída que una bajada a velocidad constante?


Se supone que la propiedad delay es un valor fijo.Se puede cambiar esta y jugar con el procedimiento del timer.
No parece nada fácil que no sea brusca esa bajada.

Con el uso de wait he tenido mas problema que usando un timer.Objetos nulos por ejemplo

Ejemplo de desplazamiento con botones. Es parecido a uno que circula por la red.

Saludos

MueveObjeto.tar.gz
Descripción:  
Descargar
Nombre del archivo: MueveObjeto.tar.gz
Tamaño: 5.91 KB
Descargado: 56 veces
MueveObjeto.tar.gz
Descripción:  
Descargar
Nombre del archivo: MueveObjeto.tar.gz
Tamaño: 5.91 KB
Descargado: 56 veces
MueveObjeto.tar.gz
Descripción:  
Descargar
Nombre del archivo: MueveObjeto.tar.gz
Tamaño: 5.91 KB
Descargado: 56 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
oOOoh! Qué chulo!, lo estudiaré a ver qué saco en claro.
Gracias.
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
Citar:
¿Cómo podría variar su velocidad gradualmente para acelerarlo para que hiciera más una caída que una bajada a velocidad constante?


Supongo, que si quieres una "caida libre" tienes que usar para el desplazamiento en el eje Y, la ecuacion:

a231c8ec54c1b0fc986fe61e7423c898

donde:
    d: indica cuando se desplaza en la coordenada Y,
    g: gravedad 9.81
   t: tiempo, definido en el temporizador.delay


Enlace: http://es.wikipedia.org/wiki/Ecuaciones_para_un_cuerpo_en_caida_libre
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 18 Diciembre 2012, 17:54; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
Sí, la ecuación de la caída libre es lo primero que probé, pero me hice la picha un lío porque ya que en el ordenador es distinto a la realidad, los metros serían píxeles y el tiempo es algo que va como a pequeños "trozos", creo que habría que cambiar la aceleración con otro valor para conseguir la sensación de una caída suave (ya sea acelerada o desacelerada) en un programa.
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
¿Cómo creéis que se conseguirán mejores resultados

a) Haciendo que en cada pixel el wait sea proporcionalmente un poco mayor.

b) Haciendo que el objeto salte proporcionalmente más pixeles en cada wait.

?

(para conseguir un movimiento sin trompicones, se entiende)


REEDITADO: Esto parece más cosa de videojuegos que de aplicaciones de escritorio, la verdad  
 



 
última edición por guadafan el Martes, 18 Diciembre 2012, 18:49; editado 1 vez 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
Citar:
a) Haciendo que en cada pixel el wait sea proporcionalmente un poco mayor.

No, ya que la relacion no es proporcional, sino es una potencia (tiempo elevado a 2)

Citar:

..... wait.
(para conseguir un movimiento sin trompicones, se entiende)


Yo no usaria un wait (que lo que hace es parar la ejecucion del programa el tiempo que le digas, no dejandote ejecutar mas), lo suyo es usar un control timer, que cada vez que se dispare, dibuje el formulario... y asi puedes estar ejecutando otra parte de tu programa. (asi es como lo hago en los juegos  que he realizado)

Citar:
Esto parece más cosa de videojuegos que de aplicaciones de escritorio, la verdad

Estas haciendo una animación... y por lo tanto... tienes que dar la sensación de movimiento al ojo humano... para ello lo que se hace en las peliculas es cada segundo emitir 24 fotogramas y asi "da la sensación" de movimiento... tu tienes que hacer el programa de forma parecida. Tienes que redibujar cada 1/24 segundos (0.041 segundos) un fotograma (en tu caso tu formulario) en tu pantalla, y asi parecerá que se produce movimiento "sin trompicones"...

Mirate esto: Fotogramas por Segundo

He hecho un pequeño código, y creo que consigo lo que quieres...
He puesto un coeficiente (que puedes alterar con un control  Slider) en la ecuación del movimiento del eje Y, para ver como se puede acelerar o desacelerar el movimiento.

Caida-0.0.1.tar.gz
Descripción: Ejemplo de Caida libre de un formulario. 
Descargar
Nombre del archivo: Caida-0.0.1.tar.gz
Tamaño: 19.59 KB
Descargado: 52 veces
Caida-0.0.1.tar.gz
Descripción: Ejemplo de Caida libre de un formulario. 
Descargar
Nombre del archivo: Caida-0.0.1.tar.gz
Tamaño: 19.59 KB
Descargado: 52 veces
Caida-0.0.1.tar.gz
Descripción: Ejemplo de Caida libre de un formulario. 
Descargar
Nombre del archivo: Caida-0.0.1.tar.gz
Tamaño: 19.59 KB
Descargado: 52 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Efecto Persiana 
 
Julio, me he tomado el atrevimiento de hacerle una pequeña modificación a tu código que hace que baje un poco más lento de acuerdo al coeficiente por el que multiplicas al divisor, el movimiento se ve bastante fluido y no "cae" tan de golpe.
La línea modificada es    Me.y = (tiempo ^ 2) / (Slider1.value * 25)
Public Sub Timer1_Timer()
  
  tiempo += Timer1.Delay
  
  Me.y = (tiempo ^ 2) / (Slider1.value * 25)
  If Me.y > Screen.Height Then Timer1.Stop
  
End
 


Quizá ayude al compañero Guadafan a conseguir el efecto deseado,jugando con dicho factor.
Saludos
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
última edición por Dani26 el Miercoles, 19 Diciembre 2012, 02:05; editado 1 vez 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Efecto Colision De Python En Gambas arkyansoul Aplicaciones/Fragmentos de Código 2 Domingo, 23 Enero 2011, 23:52 Ver último mensaje
arkyansoul
No hay nuevos mensajes Clase: Efecto Cortinilla jsbsan Aplicaciones/Fragmentos de Código 1 Domingo, 09 Diciembre 2012, 12:32 Ver último mensaje
Shell
No hay nuevos mensajes Efecto Del Metodo Resize Con Un Dibujo Shell Aplicaciones/Fragmentos de Código 2 Domingo, 09 Junio 2013, 19:47 Ver último mensaje
jguardon
No hay nuevos mensajes Efecto óptico Shell Aplicaciones/Fragmentos de Código 4 Sabado, 19 Diciembre 2015, 11:52 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron