flushkey

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

darth

Betreff: flushkey

BeitragSa, Sep 03, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
ich hab n problem mit dem flushkey befehl...
ich brauch den, denn wenn ich ihn nicht hab, drückt man einmal während dem spiel enter, läuft jahre später an etwas vorbei und nimmt es dann auf... is doch doof...
aber wenn ich den flushkey jetzt einsetze, dann muss ich glück haben, damit der ein ereignis startet...
jetzt ist die frage: gibt es ne bestimmte stelle wo ich den befehl schreiben muss? soll ich n timer einbauen? was sonst noch?
Diese Signatur ist leer.
 

DasKlo

BeitragSa, Sep 03, 2005 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten seztzt du das ganz ans Ende der Hauptschleife, ungefähr so:
BlitzBasic: [AUSKLAPPEN]

Repeat
Cls
; Der Code
Flip
FlushKeys()
Forever


Wenn du denn mittendrinnen einbaust, dann löscht der dir die Tastatureingaen, bevor du die verarbeiten kannst
Aktuelles Projekt:
Demonspawn 29%
Gesamt CodeGröße: 614KB
Zeilen: 17967
OrdnerGröße: 151MB (wird allerdings noch weniger)

darth

Betreff: ...

BeitragSa, Sep 03, 2005 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
hmm... hab ich ausprobiert...
da muss man schon sehr glück haben damits geht... =S 50mal auf taste haun irgendwann wirds schon gehn...
Diese Signatur ist leer.
 

DasKlo

BeitragSa, Sep 03, 2005 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeig mal den Code, dann kann man besser darüber reden
Aktuelles Projekt:
Demonspawn 29%
Gesamt CodeGröße: 614KB
Zeilen: 17967
OrdnerGröße: 151MB (wird allerdings noch weniger)

darth

Betreff: ..

BeitragSa, Sep 03, 2005 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
... =0 700 zeilen???
wart... ich schick mal das start, da ists das selbe, einfach mit flushmouse... mom
Code: [AUSKLAPPEN]
Graphics3D 800,600,0,1
SetBuffer BackBuffer()

camera=CreateCamera()
 CameraViewport camera,0,0,800,600
 light=CreateLight()

maus=LoadImage("media\buttons\maus.bmp")
 ScaleImage maus,2,2
; ganze restl. images etc  laden

While Not keyhit(1)

; wenn maus über button soll er leuchten
If MouseX()>300 And MouseX()<500 And MouseY()>95 And MouseY()<165 Then
 leucht=1
  If MouseHit(1) Then goto fertig
 Else
  leucht=0
EndIf

;change modus
If KeyHit(201) Then
 modus=modus+1
EndIf
If modus=6 Then modus=modus-6

If KeyHit(209) Then
 modus=modus-1
EndIf
If modus=-1 Then modus=modus+6

   UpdateWorld
   RenderWorld

   If leucht=1 Then
    DrawImage logo2,5,5
   Else
    DrawImage logo,5,5
   EndIf
   
   DrawImage maus,MouseX(),MouseY()
   
   Text 100,200,"Player:"
 ; hier ganze restl. beschreibung

   Flip
 flushmouse ;hier isses

Wend
.fertig
;ganze modus einstellungen


hoffe mal der code reicht als bsp...
Diese Signatur ist leer.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Sep 03, 2005 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Machs vor Flip, da sollte es dann funktionieren!
[BB2D | BB3D | BB+]
 

DasKlo

BeitragSa, Sep 03, 2005 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Das dürfte eigentlich nichts ändern
Versuchs mal mit Flushmouse()
Aktuelles Projekt:
Demonspawn 29%
Gesamt CodeGröße: 614KB
Zeilen: 17967
OrdnerGröße: 151MB (wird allerdings noch weniger)

Eclipse

BeitragSa, Sep 03, 2005 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
und was nützt ihm das?
Dann hat er eben eine Funktion statt einer Prozedur aber in seinem fall ist das völlig egal

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Sep 03, 2005 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn es nach flip steht gibt es nur eine minimale Zeit in der eine Tastendruck funktioniert !
Denn die meiste Zeit bei schnellen Rechnern ist die Wartezeit auf den Monitor!

Abgesehen davon ist Flushkeys eigendlich normal nicht nötig, solange diese Schleife läuft!

Ich denke mal das das hier zu problemen führt!
BlitzBasic: [AUSKLAPPEN]
; wenn maus über button soll er leuchten 
If MouseX()>300 And MouseX()<500 And MouseY()>95 And MouseY()<165 Then
leucht=1
If MouseHit(1) Then Goto fertig
Else
leucht=0
EndIf

da MouseHit(1) nicht immer abgefragt wird !
drückt man einmal die Maus ohne das es aufgerufen wurde bleibt das erhalten ...
kommt man nun auf den Button wird es gleich ausgeführt!

besser man liest alle Key- und Maushit in eine Variable immer neu ein!
BlitzBasic: [AUSKLAPPEN]
; wenn maus über button soll er leuchten 
M_Hit = MouseHit(1)
If MouseX()>300 And MouseX()<500 And MouseY()>95 And MouseY()<165 Then
leucht=1
If M_Hit Then Goto fertig
Else
leucht=0
EndIf
[BB2D | BB3D | BB+]
  • Zuletzt bearbeitet von Rallimen am Sa, Sep 03, 2005 22:10, insgesamt einmal bearbeitet

darth

Betreff: ...

BeitragSa, Sep 03, 2005 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
also doch mit einem timer?
(dass er nur jede sekunde n flushmouse/flushkey macht...)
oder gibts doch noch n anderen weg?
Diese Signatur ist leer.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Sep 04, 2005 2:00
Antworten mit Zitat
Benutzer-Profile anzeigen
@darth gamer, warum überhaupt FlushKeys? Diesen Befehl setze ich immer dann ein, wenn ich ein Programm schreibe welches mir irgendwas auf dem Bildschirm malt aber nicht weiterläuft. Damit ich mir dann das Bild auch anschauen kann dann setz ich ganz am Ende FlushKeys / WaitKey / End... Und fertig ist die Sache.

Willst du etwas abfragen was während der Laufzeit passiert aber nicht irgendwann mal passiert sein könnte dann ersetze mal KeyHit mit KeyDown und MouseHit mit MouseDown... Vielleicht hilft dir das ja weiter.
 

Ava

Gast

BeitragSo, Sep 04, 2005 5:38
Antworten mit Zitat
Wenn es Dir nur darum geht, für einzelne Tasten zu verhindern, dass ein früher Tastendruck später mal eine Handlung ausführt, dann frage am besten alle Tasten, die wichtig in Deinem Spiel sind, regelmässig mit KeyHit() ab! Dies bewirkt ja ebenfalls einen (ganz gezielten) Tastenreset! Twisted Evil

Du kannst Dir die benötigten Werte vor Deiner Hauptschleife dann auch zwischenspeichern. Das ist ja sowieso oft eine ganz brauchbare vorgehensweise, denn schnell hintereinander für verschiedene Möglichkeiten die selbe Taste mit KeyHit() oder MouseHit() abzufragen, funktioniert ja eh nicht wirklich gut. Wink


[/edit]
ok, hatte Rallimen schon geschrieben. Smile

Alfadur

BeitragSo, Sep 04, 2005 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
if keyhit(enter) then
mach_dinge...
flushkeys()
end if ...

???
A Cray is the only computer that runs an endless loop in less than four hours.

darth

Betreff: thx

BeitragSo, Sep 04, 2005 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
@ava: ähm... ich frags ja ab... aber auswirkung hats nur wenn er nahe am objekt ist... d.h: er speicherts bis er da ist, und machts erst dann

@alfadur: werd ich so ausprobieren, thx
Diese Signatur ist leer.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group