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
MouseButton ausbremsen ?
Du kannst ja eine Variable auf 1 setzen wenn die Maus gedrückt wird und sobald sie wieder los gelassen wird wieder auf 0
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 Not MouseButton(1) And mouseklick
mouseklick = 0
ElseIf MouseButton(1) And Not mouseklick
mouseklick = 1
; hier kommt der einmal aufzuführende code rein
EndIf
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
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping

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
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Hier ein Beispielcode:
@Zigapeda: aus <> mach = 
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

hmm jo stimmt, aber der erste, der ist richtig, funktioniert aber auch nicht richtig oOMacros hat geschrieben:@Zigapeda: aus <> mach =![]()
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
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping
