Search This Blog

Saturday, 20 April 2013

El mouse y Small Basic (código)


 

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