Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 27.08.2013, 10:47 Titel: brauch hilfe bei Screenevent |
|
|
Hallo
folgendes Problem hab ich: benutze ich ScreenEvent in einem Programm mit mehreren Menüs so funktioniert im ersten alles super doch im nächsten scheinen sich die Werte des Eventspeichers einzupendeln. Wobei ab und an auch ein Mausklick angezeigt wird obwohl es keinen gab.
Code: | #Include Once "fbgfx.bi"
Dim Shared evt As FB.EVENT
Screenres 1000, 575, 32
Dim AS String Rumpel
Dim AS Integer WF_ob, WF_kante, pressed = 0, X2, Y2
Do ' Diese Schleife steht für ein vorhergehendes Menu
sleep 1 ' lasse ich diese weg geht alles
Loop Until Inkey = Chr(27)
DO
Sleep 1
screenlock
locate 1, 1: ? "press " & pressed & " / obj " & WF_ob & " / kante " & WF_kante & " "
locate 2, 1: ? "koordinaten " & evt.x & "/" & evt.y & " " & X2 & "/" & Y2 & " "
locate 4, 1: ? "delta " & evt.dx & "/" & evt.dy & " "
screenunlock
If ScreenEvent(@evt) Then ' Maus abfragen
Select Case evt.type
CASE FB.EVENT_MOUSE_BUTTON_PRESS ' taste gedrückt
IF evt.button = FB.BUTTON_LEFT Then ' linke Taste
pressed = -1 ' druck merken
End If
Case FB.EVENT_MOUSE_BUTTON_RELEASE
pressed = 0: WF_kante = 0
Case FB.EVENT_MOUSE_MOVE
IF pressed = -1 Then
' ...
Else
X2 = evt.x: Y2 = evt.y
End If
End Select
End IF
Loop Until Inkey = Chr(27)
|
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 27.08.2013, 12:37 Titel: |
|
|
Ich weiß nicht ob das das Problem ist, aber SCREENEVENT "sammelt" die Ereignisse, bis sie abgefragt werden (frag mich aber nicht wie viele). Wenn sich aus der Vorschleife noch Ereignisse im Puffer befinden, werden die erst in der zweiten Schleife ausgewertet.
Eventuell mal vor der Schleife den Event-Puffer leeren. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 28.08.2013, 08:46 Titel: |
|
|
hm also ich hab folgendes versucht:
1. ein Sleep 50
2. Getmouse(x,y): evt.X= x: evt.Y = y
wie vermutet brachte dies nichts
jetzt wollt ich versuchen den Puffer zu leeren, weiß allerdings nicht genau wie
mein gedanke ging zu Clear @evt, , ?Bytes?
wenn es mit Clear gehen sollte was müsste für Bytes eingetragen werden?
oder habt ihr noch ne andere Idee |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.08.2013, 09:14 Titel: |
|
|
Du machst das wie mit dem Tastaturpuffer - du fragst ihn so lange ab bis er leer ist.
Code: | do while screenevent(@evt) : loop |
Ich bin ganz ehrlich gesagt kein Experte für SCREENEVENT, aber so scheint es zu funktionieren.
Mit CLEAR würdest du lediglich die Kopie des letzten Events säubern. Das ist so ähnlich wie wenn du eine Taste aus dem Tastenpuffer abfragst und dann die Speichervariable leerst - den Tastenpuffer berührt das nicht. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|