MouseZSpeed - Bug?
Übersicht

![]() |
EPSBetreff: MouseZSpeed - Bug? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi zusammen. Mir ist gerade was komisches aufgefallen bei der Verwendung der Funktion MouseZSpeed().
Ich hab mal folgendes kleine Testprogramm getippt: Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer BackBuffer() Repeat Cls Text 100,100,T T = T + MouseZSpeed() Flip Until KeyHit(1) Es ist zu sehen was zu erwarten war. Die Zahl zeigt an in welche Richtung wie of das Scrollrad betätigt wurde. Soweit so schön. Nun startet bitte mal das Programm, dreht am Rad bis ein Wert erscheint und klickt mal in irgend ein anderes Fenster, meinetwegen den Debugger oder Explorer oder sonstwo hin. Danach wieder zurück auf die Anwendung. Bei mir steht nun Zählerstand 0 !!!! Soll heißen habe ich vorher z.B. 10 mal vorwärts gescrollt scrollt es jetzt automatisch 10 mal zurück - ohne mein zutun. Wie kann das denn sein? Ist das nur bei mir so? |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem hatte ich auch mal. Ich hatte es damals so gelöst, dass immer wenn mehr als 1 Schritt (oder so) gemacht wurde, dass dann die Änderung nicht übernommen wurde. Es wurde quasi der alte Wert auf den neuen Wert überschrieben. Das geht natürlich nicht, wenn man auch nur einmal gescrollt hat. Allerdings muß ich dazu sagen, dass es bei mir zur Zeit nicht mehr so ist. Ich kann dir aber auch nicht sagen, ob es an meiner neuen Maus und deren Treiber liegt (jetzt: Razer Diamondback, vorher: Razer Viper). | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, umgangen hab ich es auch - nach einem ähnlichen Prinzip.
Ich speichere die Änderung - also MouseZSpeed() - in einer Temp Variablen. Ist die Änderung größer wie 1 - egal welche Richtung ignoriere ich sie. Andernfalls wird die 1 übernommen. Das schließt einen etwaigen verkehrten Schritt zwar nicht aus, aber zumindest bleibt man von 14 Schritten oder so verschont die einem die ganze Map zurückscrollen. Könnte also sozusagen ein Treiber-Issue sein - wenn man so will. Danke fürs testen. |
||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist mir erst vor einigen Tagen auch aufgefallen. Die Bewegung auf 1 zu begrenzen, war auch meine erste Idee, aber der Nachteil ist, dass man dann eben nur noch langsam scrollen kann.
Ich hatte versucht, das Problem mit ChristianK's MouseOverWindow-Funktion zu lösen - ich blocke praktisch die Mausrad-Bewegung, wenn die Funktion 0 zurückgibt. Wenn man nun ein anderes Fenster anklickt, hilft das auch. Wenn man das Programmfenster allerdings mit einer Tastenkombination "deaktiviert" (Windowstaste/Alt+Tab/Windowstaste+Tab) besteht das Problem weiterhin. Mal sehn, ob ich da noch ein Mittel finde. Wahrscheinlich könnte man auch einfach jedes erste MouseZSpeed()<>0 nach einem MouseZSpeed()=0 "blocken", ohne dass es den Nutzer zusehr stört, hab das aber noch nicht ausprobiert. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
tritt der Fehler nur bei der verwendung von MouseZSpeed() auf oder auch bei MouseZ() selbst?
Ansonsten könnten man einfach eine eigene kleine MouseZSpeed()-Funktion schreiben ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube so könnte sowas aussehen:
Code: [AUSKLAPPEN] Global mouse_z_pos
SetBuffer BackBuffer() Repeat Cls Text 0,0,MouseZSpeedEx() Text 0,10,MouseZSpeed() Flip Until KeyDown(1) End Function MouseZSpeedEx$() ;--> Das ist die Funktion um die es geht speed=(MouseZ()-mouse_z_pos) mouse_z_pos=MouseZ() Return speed End Function MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso MouseZSpeedEx$?
Die Funktion soll doch keinen String liefern ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Leider ist MouseZ() davon genau so betroffen - daher funktioniert die Lösung nicht. Zumindest bei mir hat es den gleichen Effekt. | ||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich weiß, das Thema ist schon alt. Hatte mal das selbe Problem und hab eine Lösung mit MouseZ gefunden. Habe festgestellt, dass MouseZ immer auf 0 gesetzt wird, sobald man in ein Fenster und wieder zurück wechselt. Ich hab mir gedacht, ich stells mal hier rein, vielleicht hilft es ja noch wem. Einfach im Loop oder vor dem Befehl UpdateMouseZ und danach ganz normal MouseZSpeed2() verwenden ![]() Code: [AUSKLAPPEN] Global MouseZPos
Function UpdateMouseZ() If MouseZ()=0 Then MouseZPos=0 End Function Function MouseZSpeed2() Local MouseZS MouseZS=(MouseZ()-MouseZPos) MouseZPos=MouseZ() Return MouseZS End Function |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group