else 如果不在 KeyCode 事件中工作 javascript

else if not working in KeyCode events javascript

我想让我的角色左右移动,我认为 jump()slideLeft() 函数工作正常,问题出在 controller(e) 函数 (else if (e.KeyCode===37)) 中。第一个函数可用,但无法访问第二个条件函数。另外,我想在制作一个 slideRight() 类似的功能后使网格坚固,所以如果我的角色在上面跳跃,平台将支撑广场。有人对我的两个问题有任何想法吗?

代码片段:

var square = document.querySelector('.square');
var grid = document.querySelector('.grid');
var bottom = 0;
let isJumping = false;
let isGoingLeft = false;
var newBottom;
let left = 0;
let leftTimerId;


function jump() {
  if (isJumping) return
  let timerUpId = setInterval(function() {
    if (bottom > 250) {
      clearInterval(timerUpId);

      let timerDownId = setInterval(function() {
        if (bottom < 0) {
          clearInterval(timerDownId);
          isJumping = false;
        }
        bottom -= 5;
        square.style.bottom = bottom + 'px';
      }, 20)
    }
    isJumping = true;
    bottom += 30;
    square.style.bottom = bottom + 'px';
  }, 20)
}

function slideLeft() {
  console.log('da');
  isGoingLeft = true;
  leftTimerId = setInterval(function() {
    left -= 5;
    square.style.left = left + 'px';
  }, 20)
}

function controller(e) {
  if (e.keyCode === 32)
    jump();
  else if (e.KeyCode === 37)
    slideLeft();
}

document.addEventListener('keydown', controller);
.grid {
  position: absolute;
  background-color: chartreuse;
  height: 20px;
  width: 500px;
  bottom: 100px;
  left: 100px;
}

.square {
  position: absolute;
  background-color: darkblue;
  height: 100px;
  width: 100px;
  bottom: 0px;
  left: 150px;
}

`
<div class="grid"></div>
<div class="square"></div>

编辑: 有错别字: 第二次写 KeyCode

function controller(e) {
    if(e.keyCode===32) {
        jump();
    }
    else if(e.keyCode===37) {
        slideLeft();
    }
}

我不太明白你问题的第二部分是什么意思。如果您希望角色能够在正方形上跳跃,则必须实施碰撞检测。像这样:

if ( isNotOnGround() ) { 
    fall() 
}