在交叉函数中,检查画布上是否有两个对象相交,我需要添加obj.x和obj.width属性来获取obj.right(side)。不知何故,属性是连接而不是添加。它可能与引用类型有关,但我不知道如何捕获原始类型中的值。
function intersects(obj1, obj2) { // checks if 2 shapes intersect
var ob2x = obj2.x;
var ob2width = obj2.width;
if (obj1.x > +obj2.x + 70 || obj2.x > +obj1.x + 70) {
console.log('false : obj1.x=' + obj1.x + ' obj2.right=' + parseInt(ob2x) + parseInt(ob2width));
return false;
}
if (obj1.y > +obj2.y + +obj2.height || obj2.y > +obj1.y + +obj1.height) {
console.log('false');
return false;
}
console.log('false');
return true;
}
我已经尝试过获取object属性的数值,如您所见。没有工作
还尝试了parseInt(),它没有用。
我想我可以将值单独作为参数添加到函数中,但我希望尽可能缩短它,因为孩子们需要使用它。
答案 0 :(得分:0)
您需要添加分组运算符:
... + (parseInt(ob2x) + parseInt(ob2width)) + ...
隔离表达式的那一部分,以便+
被视为添加。否则,完整表达式将其保持为连接,即使您将这些值转换为数字(因为如果字符串在要计算的表达式中的任何位置,+表示连接)。
E.g。
var x = 5;
var y = 6;
console.log('Sum: ' + x + y); // 56
console.log('Sum: ' + (x + y)); // 11