我对javascript很新,并且有两个onkeydown问题:
我有一个走路的人(gif)我想用箭头键移动。当它与另一个div容器碰撞时,不可见的层应该变得可见。现在我可以看到gif对按键有反应但它不会向两侧移动。你知道我的错误在哪里吗?
正如我所说,gif正在展示一个行走的人。当没有按下任何键时,该人静止不动(png);当按下左箭头时,它向左走(gif),向右走。问题是当我按下箭头键一段时间后,GIF会在很短的时间后停止继续。如何让javascript理解永久按键作为一个继续的信号?
很抱歉我的错误代码添加技能:' D从不与其他人共享代码,也不知道与您理解我的问题可能相关的内容。我真的希望你能帮助我。谢谢:))
var x=0 ; var y=440 ; // = Karl Koordinaten
var xHA2=795; var yHA2=430; // = Haus2 Koordinaten
var xHA3=433; var yHA3=565; // = Haus3 Koordinaten
var xHO1=250; var yHO1=90; // = Hotel1 Koordinaten
var TastenC; var C; var T; // TastenCode, Code, Taste
var aktiv; // speichert setInterval
function Richtung(C,Velocity) {
// Velocity = speed oder static; dateiname wird zusammengesetzt
if (C==37) { T="L"; window.document.images[0].src="Bilder/karl"+Velocity+"_L.gif"; }
else if (C==39) { T="R"; window.document.images[0].src="Bilder/karl"+Velocity+"_R.gif"; }
else { T="X"; } ;
//return T;
}
function Kollision() {
// Kollisionserkennung Karl mit Haus2
if ((Math.abs(y-yHA2)) <= 40) {
if ((Math.abs(x-xHA2)) <= 40) {
document.getElementById("Layer_haus2").style.visibility = 'visible'; // haus2 getroffen
document.getElementById("Layer_haus3").style.visibility = 'hidden'; // Andere Ebenen ausblenden
document.getElementById("Layer_hotel1").style.visibility = 'hidden';
}
}
// Kollisionserkennung Karl mit Haus3
if ((Math.abs(y-yHA3)) <= 68) {
if ((Math.abs(x-xHA3)) <= 68) {
document.getElementById("Layer_haus3").style.visibility = 'visible'; // haus3 getroffen
document.getElementById("Layer_hotel1").style.visibility = 'hidden'; // Andere Ebenen ausblenden
document.getElementById("Layer_haus2").style.visibility = 'hidden';
}
}
// Kollisionserkennung Karl mit Hotel1
if ((Math.abs(y-yHO1)) <= 68) {
if ((Math.abs(x-xHO1)) <= 68) {
document.getElementById("Layer_hotel1").style.visibility = 'visible'; // ("hotel1 getroffen!");
document.getElementById("Layer_haus2").style.visibility = 'hidden'; // Andere Ebenen ausblenden
document.getElementById("Layer_haus3").style.visibility = 'hidden';
}
}
}
function AUS() {
document.getElementById("Layer_haus2").style.visibility = 'hidden'; // Alle Ebenen ausblenden
document.getElementById("Layer_haus3").style.visibility = 'hidden';
document.getElementById("Layer_hotel1").style.visibility = 'hidden';
}
function Objektbewegung(Taste) {
if (Taste=="L") {x-=2; xHA2=(xHA2-haus2mitbew); xHA3=(xHA3-haus3mitbew); xHO1=(xHO1-hotel1mitbew); } ;
if (Taste=="R") {x+=2; xHA2=(xHA2+haus2mitbew); xHA3=(xHA3+haus3mitbew); xHO1=(xHO1+hotel1mitbew); } ;
if (Taste=="X") { yHA2=(yHA2+haus2mitbew); yHA3=(yHA3-haus3mitbew); yHO1=(yHO1-hotel1mitbew); } ;
Kollision();
document.getElementById("karl_laufen").style.left = x;
document.getElementById("karl_laufen").style.top = y;
document.getElementById("haus2").style.left = xHA2;
document.getElementById("haus2").style.top = yHA2;
document.getElementById("haus3").style.left = xHA3;
document.getElementById("haus3").style.top = yHA3;
document.getElementById("hotel1").style.left = xHO1;
document.getElementById("hotel1").style.top = yHO1;
}
function TasteGedrueckt(Ereignis) {
if (!Ereignis) { Ereignis = window.event; }
if (Ereignis.which) { TastenC = (Ereignis.which); }
else if (Ereignis.keyC) { TastenC = (Ereignis.keyC); }
Richtung(TastenC,"speed");
window.clearInterval(aktiv); // Ruecksetzen des Intervalls bei jedem Tastendruck
aktiv = window.setInterval("Objektbewegung(T)", 5); // Intervall alle x Millisekunden ausfŸhren
//Objektbewegung(T); // einzeln weitergehen
}
function TasteLosgelassen(Ereignis) {
if (!Ereignis) { Ereignis = window.event; }
if (Ereignis.which) { TastenC = (Ereignis.which); }
else if (Ereignis.keyC) { TastenC = (Ereignis.keyC); }
Richtung(TastenC,"static");
window.clearInterval(aktiv);
haus2mitbew=0;
haus3mitbew=0;
hotel1mitbew=0;
}
document.onkeydown = TasteGedrueckt;
document.onkeyup = TasteLosgelassen;
&#13;
#airbnb_cityscape {
background-image: url("../Bilder/cityscape_hintergrund.png");
height: 768px;
width: 1280px;
}
#karl_laufen {
width: 200px;
height: 300px;
visibility: visible;
position: absolute;
z-index: 2;
top: 440px;
left: 0px;
border: 0;
}
#haus1 {
visibility: visible;
position: absolute;
z-index: 2;
top: 436px;
left: 1045px;
width: 232px;
height: 201px;
border: 0;
}
#haus2 {
visibility: visible;
position: absolute;
z-index: 5;
top: 430px;
left: 795px;
width: 255px;
height: 207px;
border: 0;
}
#haus3 {
visibility: visible;
position: absolute;
z-index: 4;
top: 433px;
left: 565px;
width: 198px;
height: 208px;
border: 0;
}
#haus4 {
visibility: visible;
position: absolute;
z-index: 1;
top: 427px;
left: 0px;
width: 244px;
height: 210px;
border: 0;
}
#hotel1 {
visibility: visible;
position: absolute;
z-index: 3;
top: 90px;
left: 250px;
width: 304px;
height: 549px;
border: 0;
}
#Layer_haus2 {
visibility: hidden;
position: absolute;
z-index: 5;
margin-top: 366px;
margin-left: 1000px;
border: 0px;
}
#Layer_haus3 {
visibility: hidden;
position: absolute;
z-index: 6;
top: 320px;
right: 120px;
width: 400px;
height: 200px;
background-color: #8F8;
}
#Layer_hotel1 {
visibility: visible;
position: absolute;
z-index: 7;
border: 0px;
height: 768px;
width: 1280px;
background-color: rgba(255, 255, 255,0.5);
}
#hotelier {
margin-top: 333px;
margin-left: 950px;
position: absolute;
}
.sprechblase {
background-image: url("../Bilder/Sprechblase.png");
position: absolute;
margin-top: 270px;
margin-left: 470px;
height: 314px;
width: 525px;
}
#hoteliertext {
height: 300px;
width: 420px;
margin-left: 20px;
margin-top: 20px;
margin-right: 20px;
font-family: "Source Sans Pro";
font-size: 2em;
font-weight: 300;
}
#hotelier_karl {
margin-top: 333px;
position: absolute;
}
&#13;
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Wo soll Karl wohnen?</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300' rel='stylesheet' type='text/css'>
<script src="js/script2.js"></script>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="airbnb_cityscape">
<div id="karl_laufen">
<img src="Bilder/Karlstatic_R.png">
</div>
<div id="haus1">
<img src="Bilder/haus1.png">
</div>
<div id="haus2">
<img src="Bilder/haus2.png">
</div>
<div id="haus3">
<img src="Bilder/haus3.png">
</div>
<div id="haus4">
<img src="Bilder/haus4.png">
</div>
<div id="hotel1">
<img src="Bilder/hotel1.png">
</div>
<div id="Layer_haus2" onclick="AUS();"> </div>
<div id="Layer_haus3" onclick="AUS();"> </div>
<div id="Layer_hotel1" onclick="AUS();">
<div id="hotelier_karl"><img src="Bilder/hotelier_karl.png"></div>
<div id="hotelier"><img src="Bilder/hotelier.gif"></div>
<div class="sprechblase"><div id="hoteliertext">Schön, dass du dich für unser Hotel interessierst! In unserem 5-Sterne-Superior-Hotel kostet eine Nacht 120€</div></div>
</div>
</div>
</body>
</html>
&#13;