Hallo, ich habe ein kleines Problem:
Ich will einen Text unter direktX eingeben, was aber sehr umständlich ist.
Könnt ihr mir dabei helfen eine einfache Lösung zu finden?
Danke
Texteingabe
Code: Alles auswählen
;
; simple screen input example
;
; by Danilo, 2005/04/11, german forum
;
#ScreenWidth = 1024
#ScreenHeight = 768
#ScreenName = "Input Test"
Procedure.s InputProcedure(x,y)
Static Name$, LastCursorTime, ShowCursor, BackPushed
; Input holen
Name$ + KeyboardInkey()
; Backspace erlauben zum loeschen
If KeyboardPushed(#PB_Key_Back) And BackPushed=0
Name$ = Left(Name$,Len(Name$)-1)
BackPushed=ElapsedMilliseconds()
ElseIf BackPushed
If ElapsedMilliseconds() >= BackPushed+150
BackPushed=0
EndIf
EndIf
; Laenge begrenzen
len=Len(Name$)
If len>25
Name$ = Left(Name$,len-1)
EndIf
; Fenster zeichnen
If StartDrawing(ScreenOutput())
Box(x+5,y+5,300,100,$404040)
Box(x,y,300,100,$D7D628)
Box(x,y,300,22,$579FA8)
Line(x ,y,300, 0,$FFFFFF):Line(x,y , 0,100,$FFFFFF)
Line(x+300,y, 0,100,$000000):Line(x,y+100,300, 0,$000000)
Locate(x+2,y+2)
DrawingMode(1)
DrawText("Bitte Name eingeben")
Box(x+09,y+29,282,24,$000000)
Box(x+10,y+30,280,22,$FFFFFF)
Locate(x+13,y+33)
DrawText(Name$)
; cursor blinken lassen
time = ElapsedMilliseconds()
If time >= LastCursorTime+500
LastCursorTime=time
ShowCursor ! 1
EndIf
; cursor zeichnen
If ShowCursor
;Line(x+13+TextLength(Name$),y+32,0,18,$000000)
Line(x+13+TextLength(Name$),y+50,10,0,$000000)
EndIf
StopDrawing()
EndIf
If KeyboardReleased(#PB_Key_Return) And Name$
ProcedureReturn Name$
EndIf
EndProcedure
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("ERROR","Cant initialize game engine!"):End
EndIf
If OpenScreen(#ScreenWidth,#ScreenHeight,32,#ScreenName)=0
If OpenScreen(#ScreenWidth,#ScreenHeight,24,#ScreenName)=0
If OpenScreen(#ScreenWidth,#ScreenHeight,16,#ScreenName)=0
MessageRequester("ERROR","Cant open screen ("+Str(#ScreenWidth)+"x"+Str(#ScreenHeight)+")!"):End
EndIf:EndIf:EndIf
Repeat
ExamineKeyboard()
If IsScreenActive()
FlipBuffers()
ClearScreen($3A,$65,$98)
If Status = 0
Name$ = InputProcedure(#ScreenWidth/2-150,#ScreenHeight/2-50)
If Name$
Status+1
EndIf
Else
If StartDrawing(ScreenOutput())
FrontColor($FF,$FF,$FF)
DrawingMode(1)
Locate(100,100): DrawText("Ihre Eingabe:")
Locate(100,130): DrawText("Vielen Dank! Bitte drcken sie eine Taste...")
FrontColor($00,$00,$00)
Locate(200,100): DrawText(Name$)
StopDrawing()
EndIf
If KeyboardPushed(#PB_Key_All)
Quit=#TRUE
EndIf
EndIf
EndIf
Until Quit
- vonTurnundTaxis
- Beiträge: 2130
- Registriert: 06.10.2004 20:38
- Wohnort: Bayreuth
- Kontaktdaten:
3.3 ist ein "bisschen" alt! Vielleicht mal updaten?
Die Beste Variante fondest du HIER
(d.h. egtl. ist die editierte Vorgängerversion am Besten... Ich finde sie aber gerade nicht)
Die Beste Variante fondest du HIER
(d.h. egtl. ist die editierte Vorgängerversion am Besten... Ich finde sie aber gerade nicht)