首页 > 解决方案 > javascript中的跳转机制

问题描述

我目前正在制作游戏,这就是跳跃机制。它背后的想法是它上升500ms,等待200ms,然后回到地面(地面在顶部471)。现在一切正常,但是当它位于顶部 471 时它并没有停止我尝试这样做:

if (characterTop > 471) {
    stopMoveDown()
}

那没有用,所以我尝试这样做:(在movingDown函数中)

if (characterTop > -1 || character < 471) {
    character.style.top = top + "px";
}

这两个都不起作用。

还有一个问题,我怎样才能确保玩家在跳跃时不能再次跳跃?

这是我现在的代码:

document.body.onkeydown = function(e){
    if(e.keyCode == 32){
        jump = setInterval(function(){
            let top =
            parseInt (window.getComputedStyle(character).getPropertyValue("top"));
            top -= 1;

            var characterTop = parseInt(
                window.getComputedStyle(character).getPropertyValue("top")
            )

            if (characterTop > -1 || character < 471) {
                character.style.top = top + "px";
            }
        }, 1);

        setTimeout(function() {
            stopMoveUp()
        }, 500);

        setTimeout(function() {
            movingDown()
        }, 700);

        //if (characterTop > 471) {
        //    stopMoveDown()
        //}
    }
}

function movingDown() {
    falling = setInterval(function(){
        let top =
        parseInt (window.getComputedStyle(character).getPropertyValue("top"));
        top += 1;

        var characterTop = parseInt(
            window.getComputedStyle(character).getPropertyValue("top")
        )

        if (characterTop > -1 || character < 471) {
            character.style.top = top + "px";
        }
    }, 1);
}

function stopMoveUp() {
    clearInterval(jump);
}

function stopMoveDown() {
    clearInterval(movingDown);
}

var movingRight = false;
var movingLeft = false;

有人可以帮我解决这两个问题吗?

标签: javascripthtml

解决方案


推荐阅读