March 02, 2021, 02:25:36 PM

Author Topic: [bmx] Text input by lonnieh [ 1+ years ago ]  (Read 606 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Text input by lonnieh [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Text input
Author : lonnieh
Posted : 1+ years ago

Description : Heres a text input type that I've hacked up, with blinking cursor. Just need to call Update once in your loop. EDIT: You may need to set your orientation/alpha either before you call the update method or by adding it into the type itself

Code :
Code: BlitzMax
  1. Graphics 640, 480
  2.  
  3. Local text:GInput = GInput.Create(10, 30, ":-D ")
  4.  
  5. While Not KeyHit(KEY_ESCAPE)
  6.         Cls
  7.         DrawText "Check it out. Press [ESC] to exit.", 10, 10
  8.         text.Update
  9.         Flip
  10.         FlushMem
  11. Wend
  12.        
  13. Type GInput
  14.         Field text:String, enabled:Int = True
  15.         Field width:Int, cursor:Int = False, x:Int, y:Int, time:Long = MilliSecs()
  16.        
  17.         Method Update()
  18.                 If enabled Then
  19.                         Local q:Int = GetChar()
  20.                         If q > 0 Then
  21.                                 Select q
  22.                                         Case KEY_BACKSPACE
  23.                                                 text = Left(text, Len(text) - 1)
  24.                                         Case KEY_ENTER
  25.                                                 'I don't know what you'd want to do with this, so I
  26.                                                 'left it blank, perhaps its time for function pointers.
  27.                                         Case KEY_TAB
  28.                                                 text:+ "     "
  29.                                         Default
  30.                                                 If Not KeyDown(KEY_ALT) And Not KeyDown(KEY_CONTROL) Then text:+ Chr(q)
  31.                                 End Select
  32.                                 width = TextWidth(text)
  33.                                 cursor = True
  34.                                 time = MilliSecs()
  35.                         End If
  36.                         If MilliSecs() > time + 400 Then
  37.                                 cursor = Not cursor
  38.                                 time = MilliSecs()
  39.                         End If
  40.                         If cursor Then
  41.                                 DrawLine x + width, y + 1, x + width, y + TextHeight("1") - 1
  42.                         End If
  43.                 End If
  44.                 DrawText text, x, y
  45.         End Method
  46.        
  47.         Function Create:GInput(x:Int, y:Int, text:String = "")
  48.                 Local ret:GInput = New GInput
  49.                 ret.text = text
  50.                 ret.x = x
  51.                 ret.y = y
  52.                 ret.width = TextWidth(text)
  53.                 Return ret
  54.         End Function
  55. End Type


Comments :


Sanctus(Posted 1+ years ago)

 Thx


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal