Input-Probleme nach Systemdialog (gelöst)
Übersicht

![]() |
BlitzMoritzBetreff: Input-Probleme nach Systemdialog (gelöst) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man Systemdialoge nutzt, reagiert MouseHit danach genau einmal nicht. Wie man im folgenden Code testen kann, verhält es sich nämlich so:
Klickt man mit der Maus, öffnet sich der Dialog, dort wählt man (ebenfalls) mit der Maus eine Taste aus, der Dialog schließt sich wieder. Wenn man dann wieder die Maustaste bedient, wird nichts registriert, erst beim zweiten Mal. Meine Frage: Woher kommt dieses Verhalten und wie kann man es austricksen? Wenn man alles mit der Tastatur macht, also mit Enter den Dialog startet, mit Enter bestätigt und danach mit dem nächsten Enter wieder startet, gibt es gar kein Problem bzw. keine Aussetzer. Wenn man aber drittens den Dialog mit Escape abbricht, reagiert prompt das folgende KeyHit(KEY_RETURN) genau einmal nicht, sehr mysteriös ... BlitzMax: [AUSKLAPPEN] 'Nur bei Linux muss man dies importieren, damit die Dialoge nicht nur in einer vom späteren Spieler zumeist Edit: Mist! ![]() Einfach ein FlushMouse() und FlushKeys() NACH dem erfolgten Systemdialog einfügen (wie oben), dann funzt alles wie gewünscht ... grrr ... der Thread kann evtl. gelöscht werden. |
||
- Zuletzt bearbeitet von BlitzMoritz am Mi, Aug 03, 2011 18:10, insgesamt 8-mal bearbeitet
![]() |
Pebender |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
also eine Antwort kann ich dir leider nicht geben, aber an dem selben Problem arbeite ich auch schon seit Tagen. Man kann über einen Dialog eine Bilddatei laden, diese wird dann angezeigt, lädest du anschließend ein anderes Bild, wird das auch erst beim zweitenmal klicken sichtbar..... sonderbar. Ich dachte es liegt an meinen minderen Fähigkeiten beim programmieren. vielleicht kann ja ein Profi helfen . mfg Peter |
||
BMax & MaxGUI |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey! =)
Ich fand dieses verhalten grade beim austesten auch sehr seltsam. Da habe ich gleich ein wenig rumgespielt! ![]() Anscheinend wird, nach dem Dialog, irgendwas falsch geleert. Zumindest erkläre ich mir das so. Mein erster ansatz das zu umgehen, hat prompt geklapt: FlushMouse() Vielleicht nicht grade schön, aber für mich nicht grade störend - ich lese generell einmal pro Frame eine Globale (oder locale) ein, welche mausanschläge realisiert. Hier mal meine umgehung (haha, guter witz. Eine vollkommen dämliche funktion, aber naja!) - da FlushMouse() immer 0 zu returnen scheint und ich faul bin aber nicht unnötig viele Locals mag... Ehm ja: BlitzMax: [AUSKLAPPEN] 'Nur bei Linux muss man dies importieren, damit die Dialoge nicht nur in einer vom späteren Spieler zumeist Ps: Das Return MouseHit(taste) + FlushMouse() wird in der reihenfolge abgearbeitet wie es da steht. FlushMouse gibt immer 0 zurück und so verhindere ich das temporäre speichern von MouseHit() in einer variable. Sinniger wäre es evtl, eine generelle clear-funktion zu schreiben welche einmal pro frame aufgerufen wird und alles wichtige zurücksetz (so stände in diesem fall wahrscheinlich auch FlushMouse() darin) Nunja, mein testen hat ausserdem ergeben, das OHNE flushmouse kein moushit realisiert wird. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Wer MaxGui sagt, sollte auch Event() und Canvas sagen!"
Hier mal ein "Minimum"-Programm als Demo für "MaxGui und eigene Grafik" BlitzMax: [AUSKLAPPEN] Import MaxGUI.Drivers |
||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Midi: Ich weiß nicht, was das mit dem Thema zwingend zu tun haben soll.
Weder unter Windows, noch unter OSX muss man das Maxgui-Modul importieren, um jene kleinen Botschafts-Dialoge wie Notify etc. zu nutzen. Dass das oben steht, ist ja nur ausnahmsweise unter Linux so. Und wenn man da und dort mal ein Notify o.ä. braucht (und wie oben gezeigt mit Flush... ja auch problemlos verwenden kann), ist das doch kein Grund, das ganze "Ungetüm" Maxgui aufzufahren und sich mit Gadgets, Canvas und dem anderen Kram abzugeben. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
upps...
da hab ich was falsch verstanden, ich dachte der Fehler tritt im Beispiel nur jedesmal auf, wenn die MaxGUI eingebunden wird.... also dann war mein vorheriger Beitrag völlig unnnötig und tatsächlich am Thema vorbei.... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group