mausklick problem...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

e1d0r

Betreff: mausklick problem...

BeitragSo, Apr 03, 2005 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ich mit meiner maus in einem menu auf einem button klicke, dann führt er die vorgesehen aufgabe aus

ok, das ist nicht das problem Laughing

Aber wenn hinter dem vorigen button noch einer ist, drückt der den quasie mit, und ich bin im übernächsten menu

ich dachte mit FlushMouse krieg ich das weg aber das will nicht funktionieren. Was kann ich tun? Question

simi

BeitragSo, Apr 03, 2005 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Standardproblem:

ql:Mousehit gibt die klicks seit dem letzten aufruf zurück.....

Also ist beim zweiten Aufruf MouseHit 0....

Deshalb kannst am Anfang der Schleife MouseHit in einer Variable speichern und dann immer mit dieser überprüfen....

e1d0r

BeitragSo, Apr 03, 2005 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hm das verstehe ich nicht

meinst du damit ist das problem gelöst?

simi

BeitragSo, Apr 03, 2005 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ah, sorry, hab nicht richtig gelesen..... Embarassed

Ich denke das sollte schon mit FlushMouse gehen...

Mach das FlushMouse direkt nach der if-Abfrage:
Code: [AUSKLAPPEN]

if MouseHit(1) then
  FlushMouse()
  ....
end if


Wenn das auch nicht geht, dann wäre ein bisschen code nicht schlecht....[/code]

e1d0r

BeitragSo, Apr 03, 2005 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ah das sieht schon verständlicher aus

ich melde mich wenn ich mehr weiss

e1d0r

BeitragSo, Apr 03, 2005 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hm also dieses imagecollide klicke ich an:

BlitzBasic: [AUSKLAPPEN]


If MouseHit(1) Then
FlushMouse()
End If

Repeat
Cls

DrawImage getreidemenu,0,0
DrawImage butt_zurueck,900,700
If ImagesCollide (zeiger,MouseX(),MouseY(),0,butt_zurueck,900,700,0) And MouseDown(1) Then spielbeginn ()




und dann komm ich wieder zurück, da is ein anders image collide:

Function spielbeginn ()

If MouseHit(1) Then
FlushMouse()
End If


Color 0,0,0
Repeat
Cls

DrawImage hauptmenu1,0,0
DrawImage buttonspeichern,900,660
DrawImage buttonmonatende,900,700
DrawImage butt_getreide,900,620
DrawImage wappen,30,620

If ImagesCollide (zeiger,MouseX(),MouseY(),0,buttonmonatende,900,700,0) And MouseDown(1) Then monatende ()
If ImagesCollide (zeiger,MouseX(),MouseY(),0,buttonspeichern,900,660,0) And MouseDown(1) Then speichern ()
If ImagesCollide (zeiger,MouseX(),MouseY(),0,butt_getreide,900,620,0) And MouseDown(1) Then getreidekauf ()

da lande ich nicht, sondern im monatende

will aber ins hauptmenu wieder.... geht aber nich..

simi

BeitragSo, Apr 03, 2005 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke es sollte so sein:
Code: [AUSKLAPPEN]

Function spielbeginn ()
  FlushMouse()

  Color 0,0,0
  Repeat
  ......

e1d0r

BeitragSo, Apr 03, 2005 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert nicht Embarassed
 

Michi

BeitragSo, Apr 03, 2005 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schätze mal, der Mauszeiger ist so groß, das er über beide Schaltflächen gleihczeitig geht. Du musst anstatt Imagescollide() einfach eine Positionsüberprüfung machen

BlitzBasic: [AUSKLAPPEN]

If MouseX()>BildpositionX And MouseX()<BildpositionX+Bildbreite And MouseY()>BildpositionY And MouseY()<BildpositionY+Bildhoehe And Mausgedrueckt=True Then Geh_ins_angeklickte_Menue()
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

e1d0r

BeitragSo, Apr 03, 2005 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ich werds probieren

Alfadur

BeitragSo, Apr 03, 2005 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
es muß mit flushmouse() in der spielbeginn funktion funktionieren...wenn nicht hast du irgendwoanders nen fehler...
A Cray is the only computer that runs an endless loop in less than four hours.

DivineDominion

BeitragSo, Apr 03, 2005 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich überseht alle, dass er MouseDown() nimmt...

Hier habe ich mal was geschrieben:
https://www.blitzforum.de/viewtopic.php?t=8345

Wenn du diese Methode nimmst prüfst du auf lmb=MOUSE_HIT oder wie auch immer deine Variable heißen wird, und kannst dann darauf reagieren.
MouseDown ist eben gedrückt und gehalten. Liefert 'true' solange du drückst.
MouseHit macht das anders. Irgendwie komisch. hilft dir nämlich dann auch nicht viel, darum hab ich das da oben mal verfasst.
Den Flushmouse-KRam brauchste dann nicht mehr.
christian.tietze@gmail.com - https://christiantietze.de
macOS

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group