TImage Bug?
-
Ich habe bei meinem Programm irgendwie einen seltsamen Fehler:
sobald die Auflösung gewechselt wurde, entweder per Hand oder durch wechseln in ein anderes Programm mit anderer Auflösung(und auch wenns sie danach wiederherstestellt wurde) scheint das MouseMove Ereignis völlig durchzudrehen.
Es wird permanent aufgerufen obwohl ich es nirgends per Hand starte, übergebene X und Y Position ändert sich dabei auch(die Veränderung ist immer mit gleichem Versatz,x udn y erhöhen sich so jeden 10ten Aufruf um 1).
wer sich das ganze mal anschauen will gehe unter
www.die-gaming.de/dl/rpgeditor.zip
Besonders deutlich sieht man das wenn man grad ein Item plaziert weil es dann umher wandert.
Irgendeine Idee wie ich das verhindern kann?
-
Ich hab was anderes festgestellt:
Der Editor scheint Anfang zu hängen, so nach 10s kann man dann mal was malen. Hat man die Auflösung geändert dauert es dann immer ein bischen, bis man wieder mal ein neues Element malen kann.
-
Also das mit dem Hängen am Anfang ist normal weil er dann die ganzen Bilder lädt und die Tilemap zum beschleunigen das Editors vorkonstruiere(1000 Bilder laden und in ein Bitmap malen dauert halt etwas
).
Wollt nochma ne Splash Screen einbaun, ma schaun.Und das mit der Verzögerung nach dem Wechseln der Auflösung kommt weil der irgendwelchen Gründen andauernd das MouseMove Ereignis aufruft und der ganze Editor dadurch verlangsamt wird.
-
Kann es sein, dass irgedwie das OnPaint-Ereignis zu oft ausgeführt wird?
-
Bei mir springt da nichts herum, allerdings stimmen ja schon beim Ändern der Fentstergrösse die Koordinaten nicht mehr, d.h. das Tile wird nicht unter der Maus plaziert. Da schein also noch einiges im Argen zu liegen.
-
Das springt erst wenn du Items ausgewählt hast(das Fenster mit dem "Schwert und Helm" Button und dann auf "plazieren".
Ich hab auch die Vermutung das das OnPaint Ereignis zu oft aufgerufen wird und das wiederum MouseMove aufruft, aber ich rufs nicht von Hand auf sondern das hat irgendwas was mit dem Auflösung ändern zu tun =[Was das mit dem Resize angeht, das machich heute nacher Arbeit heile, binich nur noch nicht zu gekommen am WE.
-
dreaddy schrieb:
Das springt erst wenn du Items ausgewählt hast
Ahhja. Na das "springt" ja auch schon ohne Änderung der Auflösung. Sobald auf "Platzieren" geklickt wurde und die Maus sich über dem Spielfeld befindet werden zufällige Felder bemalt.
-
Aber nicht bei jedem =[
bei 10% garnicht, bei 10% sofort nach dem Start(aber auch nicht immer) und bei 80% nachdem sie mit alt-tab in ein Spiel gegangen sind das eine andere Auflösung hatte und wieder zurück kamen.
Und was könnte das sein?
Fakt ist das das MouseMove Ereignis in jedem Fall permanant aufgerufen wird und zwar auch wenn man die Maus nicht bewegt mit unterschiedlichen X und Y werten, deswegen machen sich die Gegenstände selbstständig und fliegen über den Bildschirm.
-
dreaddy schrieb:
Und was könnte das sein?
Beeinflussungen vom Erdmagnetfeld?
Im Ernst, woher sollen wir das ohne Kenntnis des relevanten Codes wissen? Und wir wollen hier doch kein Ratespiel veranstalten, oder?
-
Das dumme ist ja das kein relevanter Code existiert...
Wenn das Programm im Leerlauf ist, sprich die Maus über dem Spielfeld ruht darf normalerweise NIX passieren.
Ich hab weder Timer, Threads noch sonstwas im Programm eingebaut, also sollte da normalerweise zu dem Zeitpunkt wenn MouseMove permanent aufgerufen wird NIX passieren.Wenn du mir sagst was ich posten soll kannich das aba gerne machen ^^
Ich kannw enn ich dne Quellcode wieder zur Verfügung hab mal das MouseMove Event posten, aber da steht auch nur sowas drin wie
if(akt_funktion->Caption == "set tiles)set_tiles(X,Y);
else if(akt_funktion->Caption == set_gegenstaende)set_gegenstaende(X,Y);
-
Habs gefunden... ich such gestern den halben Tag und jetzt 5 minuten supi :o
Hatte ein
Application->ProcessMessages()indirekt(sprich 3 Funktionsaufrufe später) im OnMouseMove drin, das war der Haken.
Irgendwie scheint sich das wenn man die Auflösung ändern in ner Endlosschleife aufgehangen zu haben, keine Ahung warum.*edit*
so, alle Fehler behoben(auch das falsche scrollen) und neu hochgeladen