Seite 1 von 1
MouseButton ausbremsen ?
Verfasst: 18.02.2006 20:32
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
Verfasst: 18.02.2006 20:45
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
Verfasst: 18.02.2006 21:51
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
Verfasst: 19.02.2006 01:15
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
Verfasst: 19.02.2006 01:20
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 =

Verfasst: 19.02.2006 03:58
von zigapeda
Macros hat geschrieben:@Zigapeda: aus <> mach =
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