KeyEvents in Linux und Windows

Status
Nicht offen für weitere Antworten.

Sanix

Top Contributor
Hallo,
Ich habe einige Fragen zu den KeyEvents. Komischerweise habe ich ein anderes Verhalten unter Windows unter Linux

Unter Windows, wenn ich eine Taste 5s lang drücke, erhalte ich ein paar 100 KeyPressed, aber nur 1 KeyReleased. Damit kann ich umgehen, da ich dann einfach die gleichen KeyPressed "wegwerfe".
Unter Linux, sendet er mir aber auch hunderte von KeyReleased - Events. Warum ist das so? Gibt es eine Möglichkeit das zu umgehen?


Also es wurde als Bug gemeldet ist aber keiner laut Sun.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5011907


Gibt es irgend einen WorkAround?
 

Wildcard

Top Contributor
Das habe ich schon verstanden, aber das sind eben low level events. Daher die Frage was denn passieren soll (im Programm), bzgw. warum die Events ein Problem sind.
 

Sanix

Top Contributor
Es geht um ein Spiel. Es funktioniert alles. Jedoch wird das ganze problematisch, sobald ich die Aktionen übers Netzwerk broadcaste. Dann werden etwa 200 Pakte gesendet, obwohl nur 2 nötig sind. Dadurch wird dann der Client lahm gelegt, da es einer DOS Attacke gleichkommt.
 

Wildcard

Top Contributor
Warum machst du das senden von packeten von KeyEvents abhängig?
Speicher dir doch den Zustand ob eine Taste X gedrückt wurde. Mal angenommen das kommt bei dir einer Bewegung gleich:
Taste X wird gedrückt, du setzt einen Bewegungsvektor, Taste x wird losgelassen, du resetest den Bewegunsvektor.
Dann hast du einen Thread der in regelmäßigen Abständen (vermutlich synchronisiert mit dem Server) den Vektor überträgt.
Für eine Bewegung wendet ein Thread den Vektor auf die Position der Spielfigur an und stößt das Zeichnen an.
 

Sanix

Top Contributor
Also es ist so:
Ich drücke eine Taste, welcher die Geschwindigkeitsvariable y, oder x auf einen Wert setzt. Damit wird dann die Bewegung erstellt. Wenn jetzt Windows oder Linux mehrere Events sendet ist das egal, von mir aus kann er 100 Mal z.B. y auf 5 setzen. Beim Key Released, wir alles auf 0 gesetzt.
Nun muss meine Figur auf den anderen Clients die gleichen Bewegungen zur fast gleichen Zeit durchführen, deswegen wäre ein Thread, der immer überprüft, ob sich y ändert, eher suboptimal, da es wieder eine Verzögerung gibt.Aber wahrscheinlich muss ich einen mühsamen Workaround schreiben für diesen Bug, der keiner ist.
 

Wildcard

Top Contributor
Du willst mir also damit sagen, die Leute, die ihr Betriebssystem so einstellen, dass das Wiederholungsinterval bei gedrückter Taste kürzer ist, dürfen sich schneller bewegen? Nicht sehr sinnvoll, oder?
 

Sanix

Top Contributor
Das Einzige was es bewirkt ist ein y oder x - Geschwindigkeitswert zu setzen, aber nicht auszuführen. Das macht die Gameloop, welche die gleiche Verzögerung auf allen Systemen hat (teilweise halt eine höher bei sehr langsamen Systemen, aber da kann man nicht viel machen). Also schon sehr sinnvoll :)
 

Wildcard

Top Contributor
Warum synchronisierst du nicht einfach das Senden des Geschwindigkeitsvektors mit deiner Game-Loop?
 

Sanix

Top Contributor
Das würde bedeuten, dass ich das bis zu 100 Mal pro Sekunde senden würde bei 100 FPS.

Es ist irgendwie mühsam, dass ich immer wieder ein KeyReleased kriege nach jedem KeyPressed.

Unter Windows kann ich den Wert cachen und vergleichen aber unter Linux funkioniert das nicht mehr. Aber irgendwie müssen ja das andere Entwickler hingekriegt haben, nur fällt mir gerade kein Lösungsansatz ein. Vielleicht kann ich es mit KeyTyped anstatt KeyReleased umgehen, obwohl dasnicht gerade sauber ist.

Vielen Dank für deine Hilfe und Ansätze!
 

Wildcard

Top Contributor
Nein, kannst du nicht. Erstens wird keyTyped nur for Zeichen aus dem sichtbaren Bereich aufgerufen und zweitens wird es unstetig wiederholt (Betriebssystemeinstellung).
Aber irgendwie müssen ja das andere Entwickler hingekriegt haben, nur fällt mir gerade kein Lösungsansatz ein.
Ich habe wenig interesse an Netzwerkspielen, aber ich kann mir beim besten willen nicht vorstellen das in ernsthaften Projekten pro Key Event ein Paket verschickt wird.
Egon Olsen kann dir da sicherlich helfen.
 

EgonOlsen

Bekanntes Mitglied
Wildcard hat gesagt.:
Egon Olsen kann dir da sicherlich helfen.
Leider sehe ich diesen Thread erst jetzt. Wurde das Problem mittlerweile gelöst? Also ich übertrage Positions- und Richtungsvektoren, keine Keyevents oder sowas.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D KeyEvents funktionieren nicht AWT, Swing, JavaFX & SWT 8
K selbstgeschrieben Texteditor: empfangen von KeyEvents AWT, Swing, JavaFX & SWT 2
M KeyEvents für NumPad AWT, Swing, JavaFX & SWT 10
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
X Keyevents nach Beartbeitung löschen AWT, Swing, JavaFX & SWT 2
L Swing JPanel sendet keine KeyEvents AWT, Swing, JavaFX & SWT 22
P SWT: KeyEvents abfangen, wenn Programm minimiert ist? AWT, Swing, JavaFX & SWT 5
F KeyStroke für mehrere KeyEvents AWT, Swing, JavaFX & SWT 4
J Keyevents abfangen in einer JTable AWT, Swing, JavaFX & SWT 2
A Mehrere KeyEvents kombinieren AWT, Swing, JavaFX & SWT 12
X Spielsteuerung / AWT-Keyevents AWT, Swing, JavaFX & SWT 13
B problem mit KeyEvents AWT, Swing, JavaFX & SWT 2
B KeyEvents und JWindow AWT, Swing, JavaFX & SWT 6
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
S (Swing)Vollbild anzeigen unter Linux/Mac AWT, Swing, JavaFX & SWT 6
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
R Komponenten werden erst nach maximierung des Frames sichtbar (Linux) AWT, Swing, JavaFX & SWT 5
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
O Problem mit JFrame auf Linux Mint 13 Maya in VirtualBox AWT, Swing, JavaFX & SWT 3
R Problem mit TrayIcon unter Windows/Linux AWT, Swing, JavaFX & SWT 7
S GUI aussehen unter Windows und Linux (und Mac) AWT, Swing, JavaFX & SWT 13
J Applet Linux(-(k)ubuntu-)-Firefox-Java-Plugin - Fensterschließprobleme die bei Windows so nicht auftreten AWT, Swing, JavaFX & SWT 4
Ivan Dolvich [Linux] JFileChooser sieht komisch aus... AWT, Swing, JavaFX & SWT 12
G SWT Control.print(gc) funktioniert in Win, in Linux nicht AWT, Swing, JavaFX & SWT 4
F AWT MouseMotionListener e.getButton() ist immer 0 unter Linux und Windows AWT, Swing, JavaFX & SWT 6
F AWT DnD von Dateien mit Sonderzeichen funktioniert unter Linux nicht AWT, Swing, JavaFX & SWT 3
P Linux Fensterhintergrund AWT, Swing, JavaFX & SWT 2
H Y-Position mit get-/setLocation() unter Linux/Enlightement16 inkonsistent AWT, Swing, JavaFX & SWT 3
C Swing Linux mag mein Swing-repaint() nicht... AWT, Swing, JavaFX & SWT 7
D SWT und Linux AWT, Swing, JavaFX & SWT 10
N JDesktop unter Linux AWT, Swing, JavaFX & SWT 4
FuriKuri LookAndFeel in Linux setzen AWT, Swing, JavaFX & SWT 16
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
M Probleme unter Linux AWT, Swing, JavaFX & SWT 7
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
L Problem mit "setVisible" unter LINUX AWT, Swing, JavaFX & SWT 5
G SWT Button mit Image und ohne Rand unter Linux? AWT, Swing, JavaFX & SWT 7
D AWT drawString funktioniert nicht unter Linux AWT, Swing, JavaFX & SWT 7
Noar IllegalComponentStateException unter Gnu/Linux AWT, Swing, JavaFX & SWT 2
M Keine Buttons oder sonstige Objekte in JFrame unter Linux AWT, Swing, JavaFX & SWT 4
F AWT Programm unter Linux anders als unter Windows ! AWT, Swing, JavaFX & SWT 8
M JDialog unter win und linux unterschiedliche größe nötig? AWT, Swing, JavaFX & SWT 4
F Schriftarten unter Windows und Linux AWT, Swing, JavaFX & SWT 6
T Tray-Icon-Menü unter Linux AWT, Swing, JavaFX & SWT 10
J JFrame Icon unter Linux AWT, Swing, JavaFX & SWT 2
I Drag and Drop funktioniert unter Linux nicht AWT, Swing, JavaFX & SWT 6
B Problem mit ImageIcon/Swing in Linux AWT, Swing, JavaFX & SWT 6
S SWT-Anwendung als startfähiges Jar unter Linux AWT, Swing, JavaFX & SWT 4
M SWT Darstellung Linux / Win verschieden? AWT, Swing, JavaFX & SWT 4
T Popup-Menü unter Linux AWT, Swing, JavaFX & SWT 2
S JFrame prob unter linux AWT, Swing, JavaFX & SWT 4
K Tip: Gui basierende Javaprogramme unter Linux ohne X AWT, Swing, JavaFX & SWT 16
B Fokus Problem unter Linux AWT, Swing, JavaFX & SWT 7
B setExtendedState klappt net unter linux AWT, Swing, JavaFX & SWT 2
M FileSystemView und Linux AWT, Swing, JavaFX & SWT 2
Z setCursor unter Linux AWT, Swing, JavaFX & SWT 7
O SWT-Anwendung für Windows und Linux verteilen AWT, Swing, JavaFX & SWT 3
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
L Swing Panels bewegen wie Windows 10 Kacheln AWT, Swing, JavaFX & SWT 0
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
M Swing JComboBox mit Laufwerksbuchstaben (Windows) AWT, Swing, JavaFX & SWT 6
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
Avarion Swing JFrame unter Windows 10 kleiner ?! AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
S Swing Automatisch 2px Rahmen in Windows 8 AWT, Swing, JavaFX & SWT 0
A Swing JProgressbar im Windows Look & Feel Farbanpassung AWT, Swing, JavaFX & SWT 2
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Windows Fenster in einem Programm AWT, Swing, JavaFX & SWT 2
morphesus AWT Windows 7 Aero Look AWT, Swing, JavaFX & SWT 2
H Fenstergröße bei Mac und Windows gleich einstellen? AWT, Swing, JavaFX & SWT 3
B Windows Look and Feel AWT, Swing, JavaFX & SWT 2
S Swing TrayIcon bei Systemdienst (Windows, Systemuser) AWT, Swing, JavaFX & SWT 7
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
N Swing von Windows zu Ubuntu AWT, Swing, JavaFX & SWT 3
S Swing Threads Windows 7 64 bit AWT, Swing, JavaFX & SWT 12
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
A Swing Probleme unter Windows 7 AWT, Swing, JavaFX & SWT 5
Dragonfire Swing UTF-8 BOB Probleme mit Windows Look and Feel AWT, Swing, JavaFX & SWT 4
E Implementierung des Windows Rechners? AWT, Swing, JavaFX & SWT 7
O AWT Shaped, Translucent Windows AWT, Swing, JavaFX & SWT 14
LittleJavaCup Suchmaschine programmieren (wie bei Windows) AWT, Swing, JavaFX & SWT 2
W TrayIcon in Windows 7 unscharf AWT, Swing, JavaFX & SWT 8
R Windows-Dateien auf GUI ziehen AWT, Swing, JavaFX & SWT 3
G Quaqua unter Windows AWT, Swing, JavaFX & SWT 15
S LookAndFeel Look and Feel mit Windows funktioniert nicht AWT, Swing, JavaFX & SWT 8
G Windows XP layout herausfinden AWT, Swing, JavaFX & SWT 7
J Java & Windows-7-Taskbar AWT, Swing, JavaFX & SWT 13
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
L JPanel mit Objekten selektieren wie unter Windows / Ubuntu AWT, Swing, JavaFX & SWT 4
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
M Fenster Windows-Like anordnen AWT, Swing, JavaFX & SWT 2
B Swing Windows Shortcuts ersetzen AWT, Swing, JavaFX & SWT 9
G JFrame und Windows Vista? AWT, Swing, JavaFX & SWT 4
G JFrame in Windows? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben