問題の解決方法がわかりません。左+スペースを一緒に押し続けるとアニメーションは機能しますが、左を押し続けると(そのままに)、次にスペースを押すと(1回、左を押し続ける)、アニメーションはジャンプしますが、左に移動しません...他のキーを押してもアニメーションは停止します(リセットするには、すべてを残す必要があります)。誰かが私になぜそうなのか説明して、私にいくつかの実用的な解決策を教えてもらえますか?どうもありがとうございます!これはコードです:
<style>
#map{
position:relative;
height:220px;
width:800px;
}
#character{
height:100px;
width:100px;
position:absolute;
bottom: 10px;
left: 0px;
z-index:1;
}
</style>
<div id="map"><div id="character"><img src="images/bart.gif"></div></div>
<script>
enableJump = true;
jump = function(){
if(enableJump){ enableJump = false;
salta = function(){
if(flagY){
posY++;
if(posY >= 90) flagY = false;
jj = document.getElementById('character').style.bottom=posY;
}
else{
posY--;
jj = document.getElementById('character').style.bottom=posY;
if(posY < 10){
flagY = true;
clearInterval(j);
enableJump = true;
up = false;
}
}
}
j = setInterval(salta,8);
}
}
up = false; dx = false;
document.onkeydown = function(evt){
code = evt.keyCode;
if(code == 32) up=true;
if(code == 39) dx=true;
moveCharacter();
}
document.onkeyup = function(evt){
code = evt.keyCode;
if(code == 32) up=false;
if(code == 39) dx=false;
}
posX = 10; posY = 10; flagY = true; var j;
moveCharacter = function(){
if(dx == true && up == true){
jump();
posX+=10;
x1 = document.getElementById('character').style.backgroundImage='url(images/character_left.gif)';
temp = document.getElementById('character').style.left=posX;
}
else if(dx){
posX+=10;
x1 = document.getElementById('character').style.backgroundImage='url(images/character_left.gif)';
temp = document.getElementById('character').style.left=posX;
}
else if(up){ jump(); }
}
</script>
コードがクリーンアップされました(ジャンプはありませんが、同じ問題があります。左を押したまま、別のキーを押すと停止し、リセットするにはそのままにしておく必要があります)
<script>
var dx = false;
var posX = 10;
var posY = 10;
document.onkeydown = function(evt){
if(evt.keyCode == 39) dx=true;
moveCharacter();
}
document.onkeyup = function(evt){
if(evt.keyCode == 39) dx=false;
}
moveCharacter = function(){
if(dx){
posX+=10;
document.getElementById('character').style.left=posX;
}
}
</script>