我不知道如何解決這個問題: 當我把左+空間一起按下,動畫作品,但是當我把離開壓(不離開它),然後我按空間(一次,保持按左),動畫跳轉,但它不會離開...即使我按其他鍵(重置它,我必須離開所有)動畫停止。有人能解釋我爲什麼這樣,並給我一些實際的解決方案?非常感謝你!這是代碼:的JavaScript的KeyDown衝突
<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>
你有很多隱式全局變量(實際上,我沒有看到一個'var'關鍵字)可能導致衝突,我建議你清理代碼,看看是否有幫助。 – jbabey
代碼清理,同樣的問題(保持左按下,並按下另一個鍵,劇本停止動畫,並走左我必須離開左鍵,再按一次),在這裏代碼: '' –