Cursor Sobre Dos Objetos A La Vez


Objetivo: Cursor Sobre Dos Objetos A La Vez
Buenas!.

Estoy haciendo un ejemplo en el que dibujo una serie de cuadrados en un DrawingArea
La coordenada x e y de los cuadrados son generadas al azar y por ahora puede darse el caso
de que algún cuadrado pueda pisar a otro.

cuadrados_1481749912_880662

Estos cuadrados se pueden mover, al hacer clic sobre ellos si mantenemos el botón pulsado y desplazamos el cursor del ratón.
Lo que ocurre es que al coincidir una zona común de los dos cuadrados al cursor, se seleccionan los dos cuadrados.
Eliminándose uno de ellos al hacer la acción de desplazarlo.

He creado un método como este en la propia clase Cuadrado.

Public Sub Lienzo_MouseDown()

If Mouse.X >= Me.x And Mouse.x <= Me.x + TAMA And Mouse.y >= Me.y And Mouse.y <= Me.y + TAMA Then
haceclic = True
destacar = True
'Test: Mostrar índice del cuadrado que se hace clic sobre el
'Print "Has hecho clic sobre el cuadrado: " & Me.indice
Balloon.Info("Has hecho clic sobre el cuadrado: " & Me.indice, pantalla, Me.x, Me.y)
Endif

End


Produce algo como esto:

hicisteclic

Si uso el print se puede llegar a ver si se ha hecho clic en más de uno a la vez. ( En realidad no quiero que pase esto ).
¿ Se puede crear de alguna forma una array que se añadan cada uno de los cuadrados que se ha hecho clic sobre ellos y
(ya lo más fácil), mostrarlos en la clase balloon ?

Es solo para testeo de errores.
Os subo el código para que lo probéis y opinéis que cosas creéis que son adecuadas en este ejemplo cuando tratamos la POO.
Realmente debo aprender a usar la clase Rectangle, eso cuando uso QT, pero en SDL, me tengo que inventar mi clase rectangle.

Saludos

Objetivo: Re: Cursor Sobre Dos Objetos A La Vez
Pues no, aun no. Parecía que funcionaba esto:

Public Sub Lienzo_MouseDown()

If haceclic = False Then
If Mouse.X >= Me.x And Mouse.x <= Me.x + TAMA And Mouse.y >= Me.y And Mouse.y <= Me.y + TAMA Then
haceclic = True
destacar = True

'Test: Mostrar indice del cuadrado que se hace clic sobre el
'Print "Has hecho clic sobre el cuadrado: " & Me.indice
'Balloon.Info("Has hecho clic sobre el cuadrado: " & Me.indice, pantalla, Me.x, Me.y)
Endif
Endif

End


Pero es que no es solo un cuadrado, son más de uno. Eso solo funcionaría con uno.
Por un momento parecía que funcionaba. Ha sido muy raro.

Continuaré viendo el problema.

Saludos

última edición por Shell el Jueves, 15 Diciembre 2016, 09:33; editado 2 veces

Página 1 de 1


  
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
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0742s (PHP: -6% SQL: 106%)
Consultas SQL: 20 - Debug off - GZIP Activado