Repetir una rutina indefinidaménte - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: Repetir una rutina indefinidaménte (/thread-1611.html) |
Repetir una rutina indefinidaménte - Shell - 19-02-2024 Buenas!. ¿ Se acuerdan que es un bucle ?. - Mediante el ratón y la pulsación del botón izquierdo de este voy creando sprites/imágenes por un control DrawingArea. Encontré dos formas de hacerlo: - Mediante un bucle While que comprueba constantemente si se ha pulsado el botón izquierdo del ratón Pero eso tiene un problema. Un bucle While que está constantemente comprobando y comprobando parece algo como un bucle sin fin. Tiene que haber algo que lo frene un poco.. Primera versión, con el bucle While. Código: Public Sub CrearSprites(ix As Integer, iy As Integer) Ese bucle recibe la coordenada del ratón y en la zona de dibujar del control DrawingArea no se controla si se ha pulsado o no el botón izquierdo del ratón. Ese DrawingArea es refrescado por un Timer. Código: Public Sub Ventana_Draw() Segunda versión. Se evita el uso del bucle while. Código: Public Sub CrearSprites(ix As Integer, iy As Integer) Tuve que añadir dos variables comunes a todo el formulario para saber en "todo" momento donde se ha hecho clic con el ratón. Código: Public Sub Ventana_Draw() botonpulsado se produce naturalmente cuando hacemos click con el ratón en algún lugar de la ventana de dibujo. Al usar esas variables globales (por llamarlas de alguna forma, común a toda la clase). Carece de importancia llamar a crear el sprite en los eventos del ratón. Uso dos: - Uno para dibujar en el mismo lugar. MouseDown - Para crear una estela de sprites por la zona de dibujo. MouseMove. Código: Public Sub Ventana_MouseDown() Voy a subiros el proyecto ejemplo. FormEjemplo1 usa el bucle While y FormEjemplo2, no. El área de dibujo es de 1600x900. No creo que haya problema en reducirla, podéis hacerlo en las dos constantes del principio del código. No subo la imagen de la demo entero ya que es un poco grande. Subo una parte. Solo objetos por todos lados creados con el ratón. Recordar , debéis dejar pulsado el botón izquierdo. También podéis dejado pulsado el botón y mover el ratón. Ejecutar un form u otro. Y ojo, a más imágenes , mas se calienta la computadora. Llevo unos días con esto que puede parecer una tontería. En realidad, queriendo controlar otras cosas. Saludos RE: Repetir una rutina indefinidaménte - guizans - 19-02-2024 ¡Qué bueno! Me ha resultado muy curioso, está genial. Un saludo. |