📄 tastaturereignissedeu.html
字号:
<html><!-- InstanceBegin template="/Templates/template.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Java Cooperation: Behandlung von Tastaturereignissen</title>
<!-- InstanceEndEditable --><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href="jc_style.css" rel="stylesheet" type="text/css">
<script src="klayers.js"></script>
<script>
function cancelCloseMenu(){
if(self.tm) clearTimeout(tm) // cancel delayed closing
}
function showMenu(){
if(!self.menu || !self.submenu){
menu=layer("menulayer")
submenu=layer("submenulayer")
}
cancelCloseMenu()
submenu.moveTo(menu.getAbsoluteLeft(), menu.getAbsoluteTop() + menu.getHeight()) // move second menu relatively
submenu.show()
}
function initiateHideMenu(){
tm=setTimeout("hideMenu()",400) // 1 second delay to close a submenu
}
function hideMenu(){
submenu.hide()
}
</script>
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
</head>
<body bgcolor="#ffffff" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<div align="center">
<a name="top"></a>
<table bgcolor="#737373" border="0" cellpadding="0" cellspacing="0" width="618">
<tr>
<td rowspan="8" bgcolor="#000000"><img src="Pics/spacer.gif" width="1" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="131" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="13" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="58" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="94" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="81" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="48" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="23" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="38" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="19" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="108" height="1" border="0" alt=""></td>
<td bgcolor="#000000"><img src="Pics/spacer.gif" width="5" height="1" border="0" alt=""></td>
</tr>
<tr>
<td rowspan="5"><a href="index.html"><img name="fab_r1_c1" src="Pics/fab_r1_c1.gif" width="131" height="71" border="0" alt="Java cooperation home"></a></td>
<td rowspan="6" bgcolor="#737373"></td>
<td colspan="9" height="15" bgcolor="#737373"></td>
<td rowspan="8" bgcolor="#000000"><img src="Pics/spacer.gif" width="1" height="1" border="0" alt=""></td>
</tr>
<tr>
<td colspan="5"><div class="colontitul"><!-- InstanceBeginEditable name="Colontitul" -->Tutorial<!-- InstanceEndEditable --></div></td>
<td colspan="2" bgcolor="#737373"><img name="fab_r2_c8" src="Pics/fab_r2_c8.gif" width="57" height="19" border="0" alt="type and press Enter"></td>
<td colspan="2">
<FORM method=GET action="http://www.google.com/search">
<TABLE bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" height="10px"><tr>
<td height="10" valign="middle">
<INPUT TYPE=text name=q size=18 maxlength=60 value="" style="font-size:12px; color:#000000; border-width: 0px;">
<input type=hidden name=domains value="http://javacooperation.gmxhome.de/">
<input type=hidden name=sitesearch value="http://javacooperation.gmxhome.de/" checked>
</td></tr></TABLE>
</td>
</form>
<td><img src="Pics/spacer.gif" width="1" height="19" border="0" alt=""></td>
</tr>
<tr>
<td colspan="9" bgcolor="#666666"><img name="fab_r3_c3" src="Pics/fab_r3_c3.gif" width="474" height="8" border="0" alt=""></td>
<td><img src="Pics/spacer.gif" width="1" height="8" border="0" alt=""></td>
</tr>
<tr>
<td colspan="6"><a href="TutorialStartDeu.html"><img src="Pics/deupanel_01.gif" width="56" height="22" border="0"></a><a href="OnlineSpieleStartDeu.html"><img src="Pics/deupanel_02.gif" width="94" height="22" border="0"></a><a href="DownloadsDeu.html"><img src="Pics/deupanel_03.gif" width="76" height="22" border="0"></a><a href="LinksDeu.html"><img src="Pics/deupanel_04.gif" width="52" height="22" border="0"></a><a href="KontaktDeu.html"><img src="Pics/deupanel_05.gif" width="64" height="22" border="0"></a></td>
<td><img name="fab_r4_c9" src="Pics/fab_r4_c9.gif" width="19" height="22" border="0" alt=""></td>
<td width="108" height="22" bgcolor="#666666"><div align="center"><span id="menulayer" style="position: relative; background-color:#666666; width:108; height:20; vertical-align:baseline; border:1px solid #FFFFFF"><a href="#" class="text" onmouseover="showMenu(); return true" onmouseout="initiateHideMenu(); return true">Select language</a></span>
</div>
<div id="submenulayer" style="position: absolute; visibility: hidden; background-color: #666666; width:108px;">
<div class="text" style="border:1px solid #FFFFFF; border-top-width:0; padding:5px">
<a href="#" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">German</a><br>
<a href="indexEng.html" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">English</a><br>
<a href="http://javacooperation.dev.juga.ru/index.html" onmouseover="cancelCloseMenu(); return true" onmouseout="initiateHideMenu(); return true">Russian</a>
</div>
</div>
</td>
<td><img name="fab_r4_c11" src="Pics/fab_r4_c11.gif" width="5" height="22" border="0" alt=""></td>
</tr>
<tr>
<td colspan="9"><img name="fab_r5_c3" src="Pics/fab_r5_c3.gif" width="474" height="7" border="0" alt=""></td>
</tr>
<tr>
<td colspan="11" style="padding:18; background-color:#333333; vertical-align:top;">
<div class="text">
<!-- InstanceBeginEditable name="EditRegion" -->
<h2>Behandlung von Tastaturereignissen in Java 1.1 (Deprecated)</h2>
<p align="justify"><b>Achtung</b>: Diese Art der Ereignissbehandlung ist in seit Java 1.2 als deprecated markiert und erzeugt beim Kompilieren eine Warnung / lässt sich mit 1.4 nicht kompilieren. Da aber viele noch Microsofts Internet Explorer 5 verwenden, dessen Virtual Maschine noch die JDK Version 1.1 verwendet ist diese Art der Ereignissbehandlung noch für viele Browser möglich und verwendbar. Solltet ihr aber mit euren Applets auf dem neusten Stand bleiben wollen, so verwendet bitte das in dem Kapitel <a href="EventHandlingNeuDeu.html">neues Eventhandling</a> beschriebene Verfahren. Dieses Kapitel ist allerdings ausführlicher so dass es vielleicht einige Dinge besser erklärt als das neue Kapitel!</p>
<p align="justify">Die Behandlung von Tastaturereignissen funktioniert auf ganz ähnliche Weise wie die zuvor behandelte Behandlung von Mausereignissen. Auch hier steht für jede mögliche Aktion eine Methode zur Verfügung, die nach der Implementierung auf die einzelnen Benutzereingaben hört und diese verarbeitet. Ich möchte diese Funktionen nun kurz vorstellen, um euch danach ein Applet zu zeigen, mit dem ihr unseren Ball mit Hilfe der Cursortasten nach links oder rechts bewegen und mit der Space Taste stoppen könnt. Achtung!! Tastatureingaben werden vom Applet erst dann behandelt, wenn es einmal angeklickt wurde!!<br>
Nun aber zu den einzelnen Methoden:</p>
<ol start="1" type="1">
<li>public boolean keyDown (Event e, int key): Diese Methode fängt das Ereigniss auf, das beim Drücken einer Taste entsteht. </li>
<p align="justify">Dabei kann die gedrückte Taste mit der Variable key, die als Argument von der Methode übergeben wird, bestimmt werden. Die SpaceTaste hat z. B. den Wert 32. Wenn man sich nicht sicher ist, welchen Wert die Tasten haben, so kann man mit folgendem Ausdruck, den man in die keyDown (...) - Methode schreibt sich die Zahlenwerte auf die Standardausgabe schreiben lassen:<br><br><i> System.out.println ("Charakter: " + (char)key + " Integer Value: " + key);</i> <br> <br>
Für manche, besonders häufig benutzte Werte existieren spezielle Variablen, so haben z. B. die Cursortasten die Werte Event.LEFT, Event.RIGHT, Event.UP, Event.DOWN. Diese Variablen sind alle Klassenvariablen der Klasse Event und können in der API nachgelesen werden.</p>
<li>public boolean keyUp (Event e, int key): Diese Methode fängt das Ereigniss auf, das beim Loslassen einer Taste entsteht. Sie kann auf gleiche Weise wie die keyDown - Methode verwendet werden.</li>
</ol>
<p align="justify">Wir wollen unser BallApplet nun also so modifizieren, dass sich der Ball nach Drücken der linken bzw. rechten Cursortaste in die angegebene Richtung bewegt. Drückt der Benutzer die Space - Taste so soll der Ball stoppen. Dazu müssen wir folgendes Programmstück in unser Applet einfügen:</p>
<ul><i>
// Methode zur Behandlung von keyDown - Ereignissen <br>
public boolean keyDown (Event e, int key) <br>
{
<ul>
// Linke Cursortaste gedrückt <br>
if (key == Event.LEFT)<br>
{
<ul>
// Ändern des Richtunsvektors so dass sich der Ball nach Links bewegt (x - Position wird kleiner)<br>
x_speed = -1;<br>
</ul>
}<br>
// Rechte Cursortaste gedrückt <br>
else if (key == Event.RIGHT)<br>
{
<ul>
// Ändern des Richtunsvektors so dass sich der Ball nach Rechts bewegt (x - Position wird grösser)<br>
x_speed = 1;<br>
</ul>
}<br>
// Space Taste gedrückt (hat den Wert 32!)<br>
else if (key == 32)<br>
{
<ul>
// Stoppen des Balles (x_speed = 0)<br>
x_speed = 0;<br>
</ul>
}<br>
else<br>
{
<ul>
/* Zusätzlich Ausgeben eines nicht behandelten Wertes auf die Standardausgabe (nicht nötig, sondern nur als Testmöglichkeit für euch!!) */ <br>
System.out.println ("Charakter: " + (char)key + " Integer Value: " + key);<br>
</ul>
}<br><br>
// NICHT VERGESSEN!! <br>
return true;<br>
</ul>
}<br>
</i></ul>
<p align="justify">Zusätzlich müsst ihr die run() - Methode noch ein wenig abändern, siehe dazu den Source Code zu diesem Kapitel!</p>
<p align="justify">Im Grunde beherscht ihr nun alle wichtigen Techniken, um ein Spiel zu programmieren. Ihr könnt Animationen realisieren, das Flackern der Bildes unterdrücken, Bilder / Sounds einfügen und Benutzerereignisse verarbeiten. Im nächsten Kapitel werde ich mit euch daher ein komplettes Spiel programmieren (das auch mein erstes selbstprogrammiertes Computerspiel war) und zwar so eine Art Moorhuhn (natürlich graphisch wesentlich einfacher, aber das Prinzip soll das selbe sein). Um dieses Spiel allerdings wirklich verstehen zu können, müsst ihr mit Klassen, Objekten, Aufrufen von Methoden anderer Klassen... vertraut sein und ihr müsst die vorigen Kapitel verstanden haben! Anhand dieses Spiels werdet ihr noch einige weitere Techniken lernen (Punkte zählen, Leben verlieren, Mauscursor verändern, ein Objekt abschießen, Bewegung in verschiedene, zufällige Richtungen...) und danach solltet ihr in der Lage sein selbstständig eure eigenen Spiele zu entwickeln. Viel Spaß also im folgenden Kapitel, zuvor könnt ihr euch noch das in dieser Lektion geleistete ansehen, bzw. den SourceCode runterladen.</p>
<p><a href="SourceCodes/Tastaturereignisse/Tastaturereignisse.java">SourceCode download</a><br>
<a href="Applets/Tastaturereignisse/TastaturereignisseApplet.html">Applet ansehen</a>
<h4>Nächstes Kapitel</h4>
<a href="EventHandlingNeuDeu.html">Event handling mit EventListenern</a>
<!-- InstanceEndEditable -->
</div>
</td>
</tr>
<tr>
<td colspan="11" style="background-color:#990000" align="center">
<table width="100%" style="padding:0"><tr>
<td width="88" bgcolor="#993300"><div align="center" style="font-size:10px; color: #FFFFFF;"> <a href="#top"> to top </a></div></td>
<td><div align="center" style="font-size:10px; color: #FFFFFF;">
<a href="mailto:javacooperation@gmx.de">Fabian Birzele</a>, 2001-2004.<br>
web-design: <a href="http://www.freehand.str.ru/">Vadim Murzagalin</a>, 2004.
</div></td>
<td width="88">
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
<!-- InstanceEnd --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -