Probleme mit der eingabe Teste im Spiel?
Übersicht

blackmasterBetreff: Probleme mit der eingabe Teste im Spiel? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich hab mein Spiel fast fertig geproggt, aber mir ist aufgefallen das da etwas nicht stimmt, wenn man gewinnt oder so, dann kommt ja eine Meldung die ich mit der Enter Taste Fortsetzen kann, aber wenn ich es so mache: Code: [AUSKLAPPEN] If KeyDown(28) And KeyHit(28) Then
EndIf Dann wird es garnicht ausgeführt, ich habs auch so probiert: Code: [AUSKLAPPEN] If KeyHit(28) Then
EndIf geht auch net, erst wenn ich mindestens 4 oder 5 mal schnell hintereinander drücke, dann wird sie erst ausgeführt. Wenn ich KeyDown(28) benutze, dann wirds sofort ausgeführt, aber ich brauche KeyHit. Wisst ihr zufälligerweise woran das liegen kann? achso, hier mal der code was nicht sofort ausgeführt wird: Code: [AUSKLAPPEN] If Spiel = 1 Then
If KeyDown(28) And KeyHit(28) Then ;Mindestens wenn ich ganz schnell 4 oder 5 mal die Entertaste gedrückt habe, dann wirds erst ausgeführt EndIf EndIf Ich bin euch schonmal sehr dankbar für die hilfe. MFG Markus |
||
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Spiel = 1 And KeyHit(28) Then
; Mach was EndIf So muss das gehn. Wenn nicht Poste mal den ganzen Code hier rein , weil sonnst können wir nur raten. |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Wenn es nicht geht, dann fragst Du KeyHit(28) öfter in Deiner Schleife ab - und das ist nicht möglich! | ||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schreibe entweder if keydown(28) or keyhit(28), aber nicht "and".
Wenn du nämlich mit keydown abfragst, dann gibt BB eine 1 zurück und entfernt den gedrückten Knopf aus der Queue und gibt daher eine 0 bei erneuter Abfrage mit keyhit wieder. mfg |
||
°_° °.° °~° °v° .. -.- |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
TheMatrix hat Folgendes geschrieben: Wenn du nämlich mit keydown abfragst, dann gibt BB eine 1 zurück und entfernt den gedrückten Knopf aus der Queue und gibt daher eine 0 bei erneuter Abfrage mit keyhit wieder.
Ein Mythos... Die Taste wird nur bei KeyHit() zurückgesetzt. Dennoch ist die doppelte Abfrage natürlich etws sinnfrei. ![]() |
||
c64 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, hier damit kannst du sehr einfach ein Keystate abfragen wenn du es benutzen möchtest, brauchst du es nur per Include einbinden.
Einfach deine Keys per KEY_HANDLE = GL_Create_Key ( Key_SCANCODE1, [KEY_SCANCODE2] ) definieren und in deinem Mainloop sollte dann ganz oben einfach GL_UpdateInputs () stehen um die Keyroutine Upzudaten ![]() Man kann einem KEY_Handle zwei keys zuweisen also eine Alternativtaste ![]() Code: [AUSKLAPPEN] ;//////////////////////////////////////////////////////////////////////// ;/ ;/ GL_KeyControl.bb ;/ ---------------- ;/ ;/ Gamelib file. ;/ ;/ ------------- ;/ ;/ Keycontrol file ;/ ;/ Define Key's and get states by GL_Keystate (Key_ID) ;/ ;//////////////////////////////////////////////////////////////////////// Global GL_Mousekey [5] Const GL_keyHit = 1 Const GL_keyDown = 2 ;//////////////////////////////////////////////////////////////////////// Global GL_KeyControl Global GL_Key.TGL_Key Type TGL_Key Field ID Field Key Field Key2 Field State End Type ;//////////////////////////////////////// ;/ ;/ Function GL_Create_Key(Key,Key2=0) GL_Key = New TGL_Key GL_Key\ID = Handle (GL_Key) GL_Key\Key = Key GL_Key\Key2 = Key2 Return GL_Key\ID End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_HANDLE_Key(Key_ID) GL_key = Object TGL_Key(Key_ID) End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_Delete_Key (Key_ID) If Key_ID GL_Handle_Key (Key_ID) Delete GL_Key EndIf End Function ;/ ;/ ;//////////////////////////////////////// ;------------------------------------------------------------------------------------------- ;//////////////////////////////////////// ;/ ;/ Function GL_UpdateInputs () For GL_key = Each TGL_Key GL_Key\State=0 If KeyDown (GL_key\Key) GL_key\state= 2 If KeyHit (GL_key\Key) GL_key\state= 1 If KeyDown (GL_key\Key2) GL_key\state= 2 If KeyHit (GL_key\Key2) GL_key\state= 1 Next For c=1 To 5 GL_Mousekey [c] = 0 If MouseDown (c) GL_Mousekey [c] = GL_keyDown If MouseHit (c) GL_Mousekey [c] = GL_keyhit Next FlushKeys() End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_keyState (Key_ID) GL_Handle_Key (Key_ID) Return GL_Key\State End Function ;/ ;/ ;//////////////////////////////////////// |
||
Betreten verboten! Kinder haften für ihre Eltern! |
- Zuletzt bearbeitet von c64 am Di, Nov 07, 2006 17:19, insgesamt einmal bearbeitet
blackmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke euch, ich hab den fehler gedunden, des ist weil weiter oben nochmal If KeyDown(28) And Keyit(28) Then steht, das habe ich jetzt in einer Variable gepackt, das es dann auf false gesetzt wird.
Und jetzt gehts, trotzdem vielen dank für die hilfen ![]() Markus |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group