Klick auf Button verhindern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

pile

Betreff: Klick auf Button verhindern

BeitragSo, Jan 21, 2007 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, also ich habe in meinem Programm mehrere Buttons

diese werden meistens so ausgelößt:
Code: [AUSKLAPPEN]

If ImagesCollide(button#,koordinateX,koordinateY,maus,mx,my)=1
and Mousedown(1)=1 then button1press=1

Soweit alles klar, und es funktioniert auch, ABER mein Problem istwenn ich jetzt irgendwo in den freien Raum klicke, dann die Maus gedrückt halte und den Mauszeiger dann auf einen Button drauf ziehe, wird der Button angeklickt. So soll es aber nicht sein. Wie kann ich das machen das der Button nur dann geklickt wird wenn sich die Maus über dem Button befindet? Erschwerend kommt noch hinzu, dass wenn ich den Button anklicke, er also eingedrückt ist, und bei gedrückter Mausstaste, den Mauszeiger in den freien Raum ziehe, soll der Button dann auch nicht angeklickt sein, aber wenn ich ihn (die Maustaste immernoch gedrückt) wieder auf den Button ziehe, soll der Button wieder eingedrückt sein. Erst wenn sich der Mauszeiger über dem Button befindet und ich den Mausknopf drücke soll er engedrückt werden, und auch erst nachdem ich die Maustaste loslasse wenn sich der Zeiger Über dem Button befindet , soll etwas ausgelöst werden. Ok, also eigentlich ziemlich komplizierter Vorgang. Ich bekomme zwar diese Funtionen einzeln hin, aber alle auf einmal schaff ich nicht. Ich hoffe meine Beschreibung kann nachvollzogen werden. Wer nicht weis was ich meine kann das z.B. mal mit einem Button in seinem Browser ausprobieren, der "Startseitebutton" eignet sich gut dafür, denn genau so sollen meine Buttons funktionieren.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

ToeB

BeitragSo, Jan 21, 2007 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
benutz MouseHit stat MouseDown.



~Edit~

Achtung(!) :
ist noch nicht getestet !

Jo0oker

BeitragSo, Jan 21, 2007 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuch mal wenn die maus den Hintergrund berührt das dann der Wert geändert wird.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

pile

BeitragSo, Jan 21, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Crack93 MouseHit funktioniert gar nicht, keine Ahnung warum ?!

Zitat:

Versuch mal wenn die maus den Hintergrund berührt das dann der Wert geändert wird.


Was meinst du damit? Die Position und Größe der Buttons ändert sich jenachdem wie man das Fenster, in dem sie sich befinden verändert. Daher gibt es auch keinen Hintergrund, bzw. mal gibt es Einen, mal wird Er durch die Buttons oder Anderes verdeckt.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

ToeB

BeitragSo, Jan 21, 2007 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
er meint glaub ich den Code: [AUSKLAPPEN]

If mx < deineButtonPositionX
  If my < deineButtonPositionY
    If ImagesCollide(...usw...)
      If MouseHit(/Down)(1)
        Machdasunddas
      EndIf
    EndIf
  EndIf
EndIf
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

pile

BeitragSo, Jan 21, 2007 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Crack93 hat Folgendes geschrieben:
er meint glaub ich den Code: [AUSKLAPPEN]

If mx < deineButtonPositionX
  If my < deineButtonPositionY
    If ImagesCollide(...usw...)
      If MouseHit(/Down)(1)
        Machdasunddas
      EndIf
    EndIf
  EndIf
EndIf


Hä? Wenn sich die Maus außerhalb des Buttons befindet (mx/my < buttonX/buttony) aber gleichzeitig auf dem Button befindet (If ImagesCollide(...usw...) ) wie soll das denn gehen? Und was genau soll dann passieren ( Machdasunddas??)? Sorry,das hilft mir leider wenig weiter. Ich habe ja geschrieben das es sehr komplizierte Vorgänge sind, und die lassen sich doch schlecht mit "Machdasunddas" erklären.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

ToeB

BeitragSo, Jan 21, 2007 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Da musst du nur das reintragen, was du dann machen möchtes (zb. sollder dann zu einer Sprunmarke gehen, eine function aufrufen oder einfach nur was printen Wink )
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

DerHase

BeitragSo, Jan 21, 2007 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Crack und Jo0oker, warum antwortet Ihr wenn Ihr gar keinen Plan habt ?

Kuck Dir mal das an und pass es Deinem Code an, ganz nützlich ist es nen Button Type zu bauen Wink

Code: [AUSKLAPPEN]
Graphics 640, 480, 0, 2
SetBuffer (BackBuffer())
ShowPointer()

While Not KeyHit(1)
   
   MouseHit1 = MouseHit(1)
   
   If buttonpressed
      Color 123,0,23
   Else
      Color 0,234,1
   End If
   Rect 30, 30, 90, 30, 1
   
   If RectsOverlap(30, 30, 90, 30, MouseX(), MouseY(), 1, 1)
      
      If MouseHit1
         buttonpressed = 1
      End If
            
      If Not MouseDown(1)
         buttonpressed = 0   
      End If
   
   Else
      buttonpressed = 0   
   End If

   If buttonpressed = 1
      For u = 0 To 200
         Color Rand(255), Rand(255), Rand(255)
         Rect Rand(200, 400), Rand(200, 400), 10, 10
      Next
   End If
   
   Flip:Cls
   
Wend


EDIT: War ein kleiner Fehler drinne, jetzt klappt´s aber.
  • Zuletzt bearbeitet von DerHase am Mo, Jan 22, 2007 0:55, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSo, Jan 21, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich stimme dem Hasen zu. Antwortet nur wenn ihr wirklich Antwort wisst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

pile

BeitragMi, Jan 24, 2007 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Der Hase, danke für deinen Code. Ich stimme dir zwar zu, dass Leute die denken "och das könnte schon funktionieren, irgendwie... vieleicht... , ich poste einfach mal das erst Beste was mir einfällt" lieber erstmal nicht posten, sondern vorher mal Testen ob es denn so klappt wie sie denken, oder überhaupt nichts dazu schreiben (zumal wohl überhaupt nicht darauf eingegangen wurde was ich wollte, bzw. es wurde nicht verstanden). Allerdings, funktioniert dein Beispiel leider auch nicht so ganz, ich meine selbst jetzt wo du es sogar verbessert/berichtigt hast. Der Button wird zwar dann erst angeklickt wenn sich die Maus, zum Zeitpunkt des Klicks, auf dem Button befindet, aber etwas Entscheidenes fehlt noch, nämlich, dass man, wenn man die Maustaste gedrückt lässt und den Zeiger vom Button zieht und dann wieder auf den Button zurückzieht (Maustaste ist immernoch gedrückt) der Button wieder gedrückt ist (in deinem Fall erscheint bei dir so ein farbiges Muster das anzeigt das der Button gedrückt wird). Außerdem fehlt noch, wenn man die Maus auf dem Button wieder los läst, das irgend etwas passiert, z.B. Programmende.
Wie ich schon geschrieben habe: Einzeln gesehen sind die Funktionen kein Problemm, aber alle zusammen, ist recht schwer und nicht zu unterschätzen.
Heute habe ich es aber selber geschaft, ich weiß zwar noch nicht so ganz wie ich den Quelltext anschaulich mache, damit ich ihn hier reinstellen kann, aber wenn ich das habe, werde ich ihn hier veröffentlichen.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%
  • Zuletzt bearbeitet von pile am Mi, Jan 24, 2007 16:54, insgesamt 2-mal bearbeitet

Pdd

BeitragMi, Jan 24, 2007 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe dieses Problem auch oft gehabt und weis, das es 2 Lösungen gibt:
1. die von DerHase
2. mit Flushmouse() Arbeiten! (FUnktioniert allerdings nur, wenn man es richtig einsetzt, ansonsten wird nähmlich garnicts mehr erkannt, also vorsicht!)
Lieber Apfel als Birne.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group