Simulation von MouseUp() möglich?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Skulk

Betreff: Simulation von MouseUp() möglich?

BeitragFr, Jul 21, 2006 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Ho,

ich schreibe gerade an einer universellen Button-Klasse
Dieser Button soll neben einer highlightfarbe auch eine "mousedown" farbe bekommen

d.h. in der draw-routine prüfe ich ob mousedown(1) = true ist, und male den button heller.

jetzt hätte ich aber gerne, dass beim loslassen der mousetaste der button quasi "auslöst" und ich ein event meiner wahl abfeuern kann


mein konkretes problem ist also, wie prüfe ich mit blitzmax, ob gerade eine mousetaste losgelassen wurde. habt ihr da einen tipp für mich?

ich habs schon wievfolgt versucht:
Code: [AUSKLAPPEN]
If MouseDown(1) Then
   Self.Status = "clicked
End If

If Not MouseDown(1) And Self.Status = "clicked" then end


aber es haut net hin...
Ich brauch hilfe, ich steh aufm schlauch Smile

euer skulk
War doesn't determine who's right,
war determines who's left...
 

Dreamora

BeitragFr, Jul 21, 2006 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten machst du das was du versuchst zu faken: Du programmierst direkt mit den Events.

Sprich mit waitevent, eventid und EVENT_MOUSEDOWN / MOUSEUP etc
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Skulk

BeitragFr, Jul 21, 2006 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
soviel zum schlauch auf dem ich stand Smile

merci!
War doesn't determine who's right,
war determines who's left...

Rone

BeitragFr, Jul 21, 2006 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

weiss nicht ob ich dein problem richtig verstanden habe ,
aber so hab ich das bis jetzt immer gemacht.

Code: [AUSKLAPPEN]
Graphics 320,240

Local down  :Int = 0
Local up   :Int = 0
Local text  :String

While Not KeyHit(key_Escape)
   Cls
   
   If MouseDown(1) Then
      down = 1
      up = 0
      text = "MOUSEDOWN"
   ElseIf Not MouseDown(1) And down
      up = 1
      down = 0
      text = "MOUSEUP"
   EndIf
   
   DrawText text , 10 , 10
   Flip
Wend
End


Vieleicht hilft es ja:
mfg

Edit:

Zitat:
Sprich mit waitevent, eventid und EVENT_MOUSEDOWN / MOUSEUP etc

Ops, so ist ja um einiges kompfortabler...
geht das auch ohne maxGui?
 

X0r

BeitragSa, Jul 22, 2006 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den events wär dann eigentlich auch nur für Applikationen gut.
 

Skulk

BeitragSa, Jul 22, 2006 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ja genau das ist das was ich meinte. sowas in der art hatte ich jedoch probiert und es hatte net geklappt. aber ich probiers nochmal. wenn du sagst bei dir klappts muss es ja gehn Smile

also events (ich hab heut nacht nochmal drüber nachgedacht) ist nicht so günstig, da es ja eine klasse ist, die ich immer wieder instanziere.
d.h. ein Waitevent darf nicht vorkommen da ich keinem sein programm in warteschleife setzen will ohne dass er es auch will (Beispiel: menübuttons auf bewegtem hintergrund)
wenn müsste ich kommplett auf events und timer umstellen und das will ich net

deine lösung, rone, wäre mir eigentlich am liebsten....
ich versuchs einfahc nochmal
War doesn't determine who's right,
war determines who's left...
 

Dreamora

BeitragSa, Jul 22, 2006 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du?
Brauchst kein Waitevent und so ... MouseDown keydown etc arbeitet auch mit Events.

Brauchst eigentlich nur EventHooks und schon geht das.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Skulk

BeitragSa, Jul 22, 2006 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventhooks?
hast du ein tutorial für mich parat das ich dazu mal durchrackern könnte?

nachtrag:
ah etz klappts. ich hatte nen logikfehler drin.

Ich hatte folgendes stehen:
Code: [AUSKLAPPEN]
If MouseX() >= Self.x And MouseX() <= Self.x + Self.width And MouseY() >= Self.y And MouseY() <= Self.y + Self.height Then
   Self.Status = 1      ' Status auf 1 = Hover setzen
   
   If MouseDown(1) Then
      Self.Status = 2   ' Es Wurde geklickt.
   ElseIf Not MouseDown(1) And Self.Status = 2 Then
      ' Button ist gedrückt und Maus nicht mehr losgelassen!
      End
   End If         
Else
   Self.Status = 0
End If


Womit beim nächsten event der Status auf 1 zurückgesetzt wurde und die "MouseUp" bedingung niemals true wurde.

leicht abgeänder klappts aber:
Code: [AUSKLAPPEN]
If MouseX() >= Self.x And MouseX() <= Self.x + Self.width And MouseY() >= Self.y And MouseY() <= Self.y + Self.height Then
   If MouseDown(1) Then
      Self.Status = 2   ' Es Wurde geklickt.
   ElseIf Not MouseDown(1) And Self.Status = 2 Then
      ' Button ist gedrückt und Maus nicht mehr losgelassen!
      End
   ElseIf Not MouseDown(1) then
      Self.Status = 1      ' Status auf 1 = Hover setzen
   End If         
Else
   Self.Status = 0
End If



ich glaube vorerst kann ich damit ganz gut fahren
War doesn't determine who's right,
war determines who's left...
 

Dreamora

BeitragSa, Jul 22, 2006 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Für EventHooks sind Assassari's MaxGUI und Input - Event Tutorials im englischen Board sehr zu empfehlen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Skulk

BeitragSa, Jul 22, 2006 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar die zieh ich mir mal rein
dank dir, dreamora
War doesn't determine who's right,
war determines who's left...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group