MouseButton ausbremsen ?

Anfängerfragen zum Programmieren mit PureBasic.
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

MouseButton ausbremsen ?

Beitrag von kdeparade »

Wie kann man einen Mousebutton(1) zurücksetzen?
Ich arbeite im Screen-Modus.
Fange Mousebutton(1) ab, allerdings wird das "gedrückt" wahrscheinlich über mehrere Programmdurchläufe(schneller Rechner) auch jedesmal wieder ausgewertet.
Ich möchte aber nur die entspechende Aktion einmal ausgeführt haben.
Muss ich eine Zeitverzögerung einbauen? Möchte aber auch das Prog nicht ausbremsen.

Gruss KUD
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Du kannst ja eine Variable auf 1 setzen wenn die Maus gedrückt wird und sobald sie wieder los gelassen wird wieder auf 0

Code: Alles auswählen

If Not MouseButton(1) And mouseklick
  mouseklick = 0
ElseIf MouseButton(1) And Not mouseklick
  mouseklick = 1
  ; hier kommt der einmal aufzuführende code rein
EndIf
Ich hoffe du hast schon PB4, sonst geht der code nicht
wenn du noch das alte hast dann nehm den hier:

Code: Alles auswählen

If MouseButton(1) <> 0 And mouseklick
  mouseklick = 0
ElseIf MouseButton(1) And mouseklick <> 0
  mouseklick = 1
  ; hier kommt der einmal aufzuführende code rein
EndIf
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
kdeparade
Beiträge: 41
Registriert: 16.01.2006 21:08

Beitrag von kdeparade »

Mit Deinem Code kommt aber gar kein Ereignis zustande.

Code: Alles auswählen

 If MouseButton(1) <> 0 And mouseklick
      mouseklick = 0
  ElseIf MouseButton(1) And mouseklick <> 0
      mouseklick = 1
      arrayindex = 0
      mx.w = MouseX() 
      my.w = MouseY() 
      arrayindex = 0 
      Repeat
         If element(arrayindex)\Bildtyp = 2 ; wenn Typ = Schalter
           If SpriteCollision(arrayindex,element(arrayindex)\Bildposix,element(arrayindex)\Bildposiy,98,mx,my) ; teste ob Knopf Speichern gedrückt
              If element(arrayindex)\Bildanzeige = 99  ; ist 2. Bild schon aktiviert ??
                element(arrayindex)\Bildanzeige = 1 ; zurück zur normalen Anzeige (deaktivierter Schalter)
                schalterstring = element(arrayindex)\Wert + Chr(13) ; Ausschalten -fülle String zur Ccontrol
              Else
                element(arrayindex)\Bildanzeige = 99 ; zeige 2. Bild an
                schalterstring = element(arrayindex)\Wert + Chr(13) ; Einschalten -fülle String zur Ccontrol
              EndIf 
              Break   ; da man annimmt dass nur ein Schalter gleichzeitig gedr. werden kann ;-)  
           EndIf
         EndIf    
        arrayindex + 1 ; Index für Array um 1 erhöhen
      Until arrayindex > elementezahl  
  EndIf
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Ich habe es bei mir immer so gemacht :

Code: Alles auswählen

If MouseButton(1) <> 0 And MouseButton_1 = 0 :
 MouseButton_1 = 1
 ; Hier kommt der einmalige Code rein
ElseIf MouseButton(1) = 0 :
 MouseButton_1 = 0
EndIf
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Hier ein Beispielcode:

Code: Alles auswählen

OpenWindow(1,200,200,200,200,"","test")
InitSprite()
OpenWindowedScreen(WindowID(),0,0,200,200,0,0,0)
InitMouse()
AddKeyboardShortcut(1,#PB_Shortcut_Escape,1)
Repeat
event=WindowEvent()
ExamineMouse()
If MouseButton(1) = 0 And mouseklick
  mouseklick = 0
ElseIf MouseButton(1) And mouseklick = 0
  mouseklick = 1
  Debug "Klick"
  ; hier kommt der einmal aufzuführende code rein
EndIf
If event=#PB_Event_Menu
End
EndIf
ForEver
@Zigapeda: aus <> mach = :wink:
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Macros hat geschrieben:@Zigapeda: aus <> mach = :wink:
hmm jo stimmt, aber der erste, der ist richtig, funktioniert aber auch nicht richtig oO
hab ihn nochmal geändert, auch wenn schon funktionierende lösungen da sind...

Code: Alles auswählen

If Mousebutton(1) = 0 And Mouseklick = 1
  Mouseklick = 0
ElseIf Mousebutton(1) = 1 And Mouseklick = 0
  Mouseklick = 1
  ;hier der code
EndIf
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Antworten