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()
}
我想让我的角色左右移动,我认为 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()
}