Aktuelle Zeit: 24.09.2020 16:53

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Mausbewegung nach einem Klick auf Gadget
BeitragVerfasst: 21.11.2019 11:07 
Offline

Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Hallo miteinander,

ich bin dabei, ein Memory-Spiel zu programmieren. Das funktioniert soweit auch ganz gut.
Allerdings gibt es ein Problem, das ich bisher nicht lösen kann.

Zum meinem Bedien-Prinzip:
Ich klicke die erste Spielkarte an, und sie zeigt ein Bild.
Dann klicke ich die zweite Spielkarte an, die dann ebenfalls ein Bild zeigt.
Mit dem dritten Klick irgendwo ins Fenster erfolgt dann erst die Reaktion, was ich genauso möchte (keine Timer-Lösung). Entweder werden bei verschiedenen Karten die Karten dann wieder zugedeckt, oder bei gleichen werden sie entfernt.
Soweit funktioniert das Ganze.

Das Problem ist jetzt folgendes:
Jede Spielkarte ist bei mir ein ImageGadget.
Und wenn ich beim Klick auf die zweite Spielkarte nur ein wenig die Maus bewege, dann wertet das die WaitWindowEvent()-Abfrage, die dahintersteckt, als einen weiteren Klick auf das ImageGadget, was zur Folge hat, dass sofort beide Karten entweder entfernt oder wieder zugedeckt werden, sodass man sie sich gar nicht mehr anschauen kann. Und diese Mausbewegung lässt sich in der Spielpraxis grundsätzlich nicht vermeiden, sodass dieser Fall relativ häufig vorkommt.

Ich hab das jetzt so lösen wollen, dass das Programm darauf wartet, dass die linke Maustaste wieder losgelassen wird und erst dann das Programm wieder weiterläuft, und zwar damit

While GetAsyncKeyState_(#VK_MBUTTON)
Wend

Meines Wissens nach wird damit die linke Maustaste direkt abgefragt, aber das stimmt so vielleicht auch gar nicht. Jedenfalls funktioniert es nicht. Es wird nicht gewartet. Warum auch immer.
Mit der gleichen Idee hatte ich es auch mit der MouseButton()-Abfrage versucht. Aber da bin ich auch nicht zurecht gekommen. Irgendwelche MouseInit()- undWindow- und Screen-Geschichten, die hier nötig waren, haben mich überfordert und hätten möglicherweise auch nicht zum Ziel geführt.

Dann hab ich gehofft, dass bei der WindowsEvent-Abfrage doch irgendwo in den Events eine Unterscheidung möglich wird, ob die Maus nur in das Gadget klickt, oder nach dem Klick noch bewegt wird, aber da hab ich keine Möglichkeit gesehen.
Ein Klick ins Gagdet erzeugt ein #PB_Event_Gadget, und wenn man die Maus danach bewegt, ohne die Maustaste loszulassen, wird zusätzlich gleich nochmal ein #PB_Event_Gadget erzeugt, ohne das ich das verhindern kann.

Ich muss dazu sagen, ich programmiere sehr selten und muss mir dann alles nötige mühsam erarbeiten.
Deshalb hab ich meine Frage ins Anfänger-Forum gestellt. Aber auch, weil vermutlich meine Frage eher die Grundlagen betrifft. Ich hoffe, das ist ok.

Das ganze Spiel kann ich hier nicht hochladen, da ich einige Inhalte verwende, für die ich keine Rechte besitze (Bild und Ton), und ich das Spiel deshalb nur zu meinem Privatvergnügen nutzen kann - aber das sollte auch nicht nötig sein.

Habt Ihr eine Idee, was ich tun kann?
Würd mich freuen.

Gruß
OlderCoder


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Mausbewegung nach einem Klick auf Gadget
BeitragVerfasst: 21.11.2019 12:30 
Offline
Benutzeravatar

Registriert: 11.11.2004 17:52
Wohnort: Bremen
hallo OlderCoder,

wen ich Dich richtig verstanden haben,
würde ich Dir raten mal in der Hilfe nach EventType() ausschau zu halten. :allright:

_________________
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB5.72 LTS].


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Problem mit Mausbewegung nach einem Klick auf Gadget
BeitragVerfasst: 21.11.2019 13:11 
Offline

Registriert: 18.03.2013 12:30
Wohnort: Bayerland
Vielen lieben Dank Pelagio.
Die Funktion ist exakt das was ich gesucht, aber in der Hilfe nicht gefunden hatte, warum auch immer.
Dabei gibt es z.B. auf der WindowEvent()- oder WaitWindowEvent()-Seite unten bei siehe auch einen Hinweis auf den Befehl.
Aber es ist nicht immer einfach, zu wissen, wo man suchen soll, wenn man nicht weiß, wie das Gesuchte heißt.
Tatsächlich hatte ich bisher immer nur das Ergebnis von WaitWindowEvent() überprüft und verglichen.
Die Funktion EventType() liefert den Wert #PB_EventType_DragStart, wenn man nach einem Klick auf dem Gadget anfängt, die Maus zu bewegen - was schon einen Hinweis darauf liefert, wie PureBasic die Mausbewegung interpretiert.
Und das kann man natürlich leicht überprüfen, und damit ist mein Problem bereits gelöst. Funktioniert perfekt.
Ich hätte nicht gedacht, dass es so einfach wird.
Freu mich, dankeschön!

LG
OlderCoder


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye