0

我正在尝试制作一个抓蛋游戏,并在网上找到了一些代码片段,并希望它们一起工作,这样当两个 div 发生碰撞时,分数就会增加一个。我收到此错误无法在初始化之前访问“isColliding”。另外我不知道 div 碰撞是否有效,因为由于错误我无法对其进行测试,在此先感谢您的帮助!

代码:

let points = $('#points');
let countpoints = 0;
let overlap = isColliding("#basket", "#egg6");

if (overlap) {
    function EggHitsBasket() {
        countpoints++;
        points.text("points:" + countpoints);
    }
}


let isColliding = function (div1, div2) {

    let d1Offset = div1.offset();
    let d1Height = div1.outerHeight(true);
    let d1Width = div1.outerWidth(true);
    let d1Top = d1Offset.top + d1Height;
    let d1Left = d1Offset.left + d1Width;

    let d2Offset = div2.offset();
    let d2Height = div2.outerHeight(true);
    let d2Width = div2.outerWidth(true);
    let d2Top = d2Offset.top + d2Height;
    let d2Left = d2Offset.left + d2Width;

    return !(d1Top < d2Offset.top || d1Offset.top > d2Top || d1Left < d2Offset.left || d1Offset.left > d2Left);
};
4

1 回答 1

1

您在定义 isColliding 之前调用它,这与以下代码片段中发生的情况相同:

let x = y * 2
let y = 42

您需要在调用它之前声明 isColliding 。或者使用函数声明

function isColiiding(div1, div2) { ... }

而不是函数表达式

let isColliding = function (div1, div2) { ... }
于 2021-04-17T23:19:35.723 回答