javascript - if 语句返回 true,但条件不会触发

标签 javascript animation

我的代码中有一个 if 语句,如下所示。当我在控制台日志中检查这两个元素相互碰撞时,if 语句变为 true,但它不会停止我的间隔函数。我想知道什么会导致它无法正常工作?

var animationTimer = setInterval(bladAnimation, 30);

document.onkeydown = function(event) {
    if (event.keyCode == 37) {
        // <--
        fx = -15;
        fy = 0;
        froskAnimation()
    }
    if (event.keyCode == 38) {
        // opp
        fy = -15;
        fx = 0;
        froskAnimation()
    }
    if (event.keyCode == 39) {
        // -->
        fx = 15;
        fy = 0;
        froskAnimation()
    }
    if (event.keyCode == 40) {
        // ned
        fy = 15;
        fx = 0;
        froskAnimation()
    }
}

function froskAnimation() {

    Xfrosk = fx + Xfrosk;
    Yfrosk = fy + Yfrosk;

    if ((Yfrosk + 70 > maxY) || (Yfrosk < minY)) {
        Yfrosk = Yfrosk - fy;
    }
    if ((Xfrosk + 70 > maxX) || (Xfrosk < minX)) {
        Xfrosk = Xfrosk - fx;
    }

    frosk.style.left = Xfrosk + "px";
    frosk.style.top = Yfrosk + "px";
    console.log(Xfrosk)
}

function bladAnimation() {
    Yblad = by + Yblad;

    if ((Yblad + 70 > maxY) || (Yblad < minY)) {
        by = by * -1;
    }

    blad.style.top = Yblad + "px";
}

if (blad.x < frosk.x + frosk.width  && blad.x + blad.width  > frosk.x 
        && blad.y < frosk.y + frosk.height && blad.y + blad.height > frosk.y) {
    clearInterval(animationTimer);
}

完整代码在这里:https://codepen.io/ctrlvi/pen/jXbJYG

最佳答案

该条件仅在加载 JavaScript 时执行一次。此时条件可能是错误的。您应该在 bladAnimation 结束时移动它(我想您想要做的是当自动移动的 block 碰到另一个 block 时停止它)。

function bladAnimation() {
    Yblad = by + Yblad;

    if ((Yblad + 70 > maxY) || (Yblad < minY)) {
        by = by * -1;
    }

    blad.style.top = Yblad + "px";

    if (blad.x < frosk.x + frosk.width  && blad.x + blad.width  > frosk.x 
        && blad.y < frosk.y + frosk.height && blad.y + blad.height > frosk.y) {
        clearInterval(animationTimer);
    }

}

关于javascript - if 语句返回 true,但条件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53765019/

相关文章:

html - svg 动画奇怪的行为

ios - 仅在用户滚动时从 willDisplayCell 动画单元格,而不是在 reloadData 之后

javascript - 文本动画使用css淡出和进入部分文本

javascript - 为什么第二个按钮在这里没有做任何事情?

javascript - 删除后的数据重复 (Firebase)

javascript - 多选复选框值显示在按钮 Vanilla js 上

iPhone自动旋转动画

wpf - Spring 质量系统的阻尼效应(或者这是 ElasticEase?)

javascript - Jquery ajax 调用谷歌地图 api 给出语法错误 : invalid label

javascript - 在哪里引用 Ionic 的 template/[xxx].html 的 JavaScript 文件