Keydown()-Prob

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

atapter2

Betreff: Keydown()-Prob

BeitragDi, Aug 23, 2005 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich will in einer Schleife bei einem Pfeiltastendruck nach unten jeweils einen Text darstellen, der in einer Function gespeichert ist.
Ich habe es so probiert:
BlitzBasic: [AUSKLAPPEN]

Repeat
If KeyDown(208) Then
Text1()
status=1
EndIf
If status = 1 And KeyDown(208) Then
Text2()
status=2
EndIf
...
Until KeyHit(1)


Das funzt aber nicht, weil immer gleich der zweite Text dargestellt wird.
Wie kann man das ändern?
Thx schonmal, atapter2
 

MegaTefyt

BeitragDi, Aug 23, 2005 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich seh den Sinn nicht so ganz (bzw. sieht mir das arg umständlich aus) aber mit KeyHit anstatt KeyDown müsste das funktionieren (dass mit jedem Tastendruck der nächste Text dargestellt wird).

Aber ich weise nochmal darauf hin, dass das extrem umständlich und unsauber ist (in dieser Form). ^^

Blitz3D

BeitragDi, Aug 23, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Variable Status als Global deklarieren:BlitzBasic: [AUSKLAPPEN]
Global Status
User posted image
Xware Entertainment und Forum
User posted image

tobiasm767

BeitragDi, Aug 23, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
du must nach dem ersten EndIf
ein
FlushKeys() machen
 

MegaTefyt

BeitragDi, Aug 23, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz3D hat Folgendes geschrieben:
Du musst die Variable Status als Global deklarieren:BlitzBasic: [AUSKLAPPEN]
Global Status


Ähm, kurz und knapp: nein. Rolling Eyes
 

atapter2

BeitragDi, Aug 23, 2005 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, mit dem Global status das bringts nicht

tobiasm767

BeitragDi, Aug 23, 2005 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
mach nach dem ERSTEN endif ein FLUSHKEYS() rein!!!!!!!
 

atapter2

BeitragDi, Aug 23, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
tobiasm767 hat Folgendes geschrieben:
mach nach dem ERSTEN endif ein FLUSHKEYS() rein!!!!!!!


Das klappt nicht! Ich hab ja auch mehrere dieser Abfragen. Kann es sein, dass sich Flushkeys() gegenseitig aufhebt wenn man es mehrmals einsetzt?

Blitz3D

BeitragDi, Aug 23, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
was steht in der Funktion text2() ?
User posted image
Xware Entertainment und Forum
User posted image
 

Mr Hopp

BeitragDi, Aug 23, 2005 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Man! Das kann man sich ja nicht mit anschauen, gib endlich mal den Code, oder willst du, das wir noch Jahre lang raten, was du falsch machen könntest !?!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 23, 2005 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@adapter2
Also du machst eine KeyDown -Abfrage in welcher die Variable 'status' auf 1 gesetzt wird. GLEICH DANACH fragst du wenn status gleich 1 und KeyDown, dann mache status = 2!!! Im nächstem Durchlauf wird wieder status auf 1 gesetzt usw. usw. Da die Routine wohl etwas schneller sein dürfte als überhaupt jemand die Taste betätigen kann, wird natürlich wirrwar für den Anwender sichtbar. Versuchs mal mit KeyHit, oder machst eine '''KeyUp''' -Funktion, oder probiere mal folgenden Code, vielleicht hilft ja dieser. Ich kann dir bei deinem Beispiel nicht ganz folgen, was passieren soll.
Code: [AUSKLAPPEN]

While Not KeyHit(1)
 If KeyHit(208) Then
  Text(status)
  status=1-status
 End If
Wend
End


Function Text(status)
 If status=0 Then Print "Dies ist der erste Text"
 If status=1 Then Print "Und das hier ist der zweite Text"
End Function
 

atapter2

BeitragDi, Aug 23, 2005 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, am Anfang wird ein Dim(150) definiert.
In den Funktionen Text1(), Text2() etc. wird jeweils in 25er-Schritten das Dim-Feld ausgelesen und dann ausgegeben. Die Ausgabe erfolgt auch in 25er-Schritten, und wenn der Benutzer auf die Pfeiltaste nach unten drückt soll der nächste 25er-Text kommen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 23, 2005 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Aja, OK. Hier mal ein neues Beispiel:
Code: [AUSKLAPPEN]
Graphics 800,600,32,2

Dim menge$(149)

menge(0)="Erster"
menge(1)="Text"
menge(2)="und so weiter, bis 25 Zeilen"

menge(25)="Zweiter"
menge(26)="Text"
menge(27)="und so weiter, und so weiter..."




While Not KeyHit(1)
 If KeyHit(208) Then
  texte(status)
  status=status+1
  If status>=6 Then status=0
 End If
Wend
End


Function texte(start)
 For weiter=start*25 To (start*25)+24
  Print Str(weiter)+" - "+menge(weiter)
 Next
End Function

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 23, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm, adapter2... Wie hast du es geschafft in weniger als einer Minute mein Beitrag zu lesen, Code ausprobieren, für nicht richtig zu deklarieren und dann die Mehrzeiler zu schreiben??? Naja, bin wohl zu langsam für diese Welt.

P.S. mit einer kleinen Modifikation, kannst du den Text mit dem eben genannten Beispiel auch scrollen lassen...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group