Como hemos visto en la librería GraphicsWindow tenemos unas propiedades
para saber donde está el ratón en base a las coordenadas de la ventana, pero
tan solo eso, no sabemos si hemos pulsado un botón, ni tenemos la opción de
poder ocultar el cursor para utilizar nosotros otro en la aplicación con alguna
imagen, ¿verdad? Pues por eso existe la librería Mouse en Small Basic,
que nos pone a nuestro alcance nuevas propiedades y operaciones para darle un
mejor uso en nuestros programas:
- IsLeftButtonDown: Permite obtener si el
botón izquierdo del ratón está pulsado (“True”) o no (“False”).
- IsRightButtonDown: Permite obtener si el
botón derecho del ratón está pulsado (“True”) o no (“False”).
- MouseX: Permite obtener y
cambiar la posición global del ratón en la coordenada X. No es lo mismo
que la posición local que GraphicsWindow.MouseX nos da.
- MouseY: Permite obtener y
cambiar la posición global del ratón en la coordenada Y. No es lo mismo
que la posición local que GraphicsWindow.MouseY nos da.
- HideCursor(): Esconde el cursor del
ratón.
- ShowCursor(): Muestra el cursor del
ratón.
Y aquí tenemos un ejemplo donde utilizaremos el ratón para mover un
cuadrado por la ventana, haciendo click sobre este ítem cuando lo queramos
arrastrar:
'----------------------------------------------------
' Prueba con el mouse
'----------------------------------------------------
GraphicsWindow.Title = "Prueba con el ratón"
GraphicsWindow.BackgroundColor = "White"
'----------------------------------------------------
isMovingBox = "False"
size = 42
sep = size / 2
'----------------------------------------------------
x = GraphicsWindow.Width / 2 - sep
y = GraphicsWindow.Height / 2 - sep
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "SteelBlue"
square = Shapes.AddRectangle(42, 42)
Shapes.Move(square, x, y)
'----------------------------------------------------
GraphicsWindow.KeyDown = OnKeyDown
GraphicsWindow.MouseMove = OnMouseMove
GraphicsWindow.MouseDown = OnMouseDown
GraphicsWindow.MouseUp = OnMouseUp
'----------------------------------------------------
Sub OnKeyDown
If GraphicsWindow.LastKey =
"S" Then
Mouse.ShowCursor()
ElseIf GraphicsWindow.LastKey =
"H" Then
Mouse.HideCursor()
ElseIf GraphicsWindow.LastKey =
"Up" Then
Mouse.MouseY = Mouse.MouseY -
10
ElseIf GraphicsWindow.LastKey =
"Down" Then
Mouse.MouseY = Mouse.MouseY +
10
ElseIf GraphicsWindow.LastKey =
"Left" Then
Mouse.MouseX = Mouse.MouseX -
10
ElseIf GraphicsWindow.LastKey = "Right"
Then
Mouse.MouseX = Mouse.MouseX +
10
EndIf
EndSub
'----------------------------------------------------
Sub OnMouseMove
If isMovingBox Then
x = GraphicsWindow.MouseX -
distx
y = GraphicsWindow.MouseY -
disty
Shapes.Move(square, x, y)
EndIf
EndSub
'----------------------------------------------------
Sub OnMouseDown
If Mouse.IsLeftButtonDown Then
ActivateMove()
ElseIf Mouse.IsRightButtonDown
Then
endl = Text.GetCharacter(13)
endl = endl +
Text.GetCharacter(10)
aux = "Global mouse
coords"+endl
aux = aux+"X =
"+Mouse.MouseX+endl
aux = aux+"Y =
"+Mouse.MouseY+endl
aux = aux+"Local mouse
coords" + endl
aux = aux+"X =
"+GraphicsWindow.MouseX+endl
aux =
aux+"Y = "+GraphicsWindow.MouseY
GraphicsWindow.ShowMessage(aux,
"Mouse Info")
EndIf
EndSub
'----------------------------------------------------
Sub ActivateMove
x1 = Shapes.GetLeft(square)
y1 = Shapes.GetTop(square)
x2 = x1 + size
y2 = y1 + size
mx = GraphicsWindow.MouseX
my = GraphicsWindow.MouseY
If x1<=mx And mx<=x2 And
y1<=my And my<=y2 Then
distx = mx - x1
disty = my - y1
isMovingBox = "True"
EndIf
EndSub
'----------------------------------------------------
Sub OnMouseUp
isMovingBox = "False"
EndSub
No comments:
Post a Comment