| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		braesident
 
 
  Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
  | 
		
			
				 Verfasst am: 27.08.2013, 09: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: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 27.08.2013, 11: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, 07: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: 4712 Wohnort: ~/
  | 
		
			
				 Verfasst am: 28.08.2013, 08: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 | 
		 | 
	
	
		  | 
	
	
		 |