警告.position()方法不能正常工作

时间:2016-05-18 10:37:15

标签: javascript jquery methods

我有一个围绕太阳旋转的地球动画。太阳停留,但地球不断改变位置。

我想提醒一条消息“对齐!”当地球与太阳完全垂直对齐时。我一直在测试它,但除了页面加载时,我无法得到警报消息,并且在页面加载之前,条件语句对应于地球的位置,在地球甚至接近对齐之前

下面的代码只显示地球的位置,因为它的位置在400以上。所以,如果我这样说,当positionplanet.left == positionsun.left时,我会得到任何消息。

var possun = $( "#Sun" );
var positionsun = possun.position();

var posplanet = $( "#Earth" );
var positionplanet = posplanet.position();

if (positionplanet.left >= 400)
{
alert(positionplanet.left + " and " + positionplanet.top);
}

我有动画的JSfiddle,但由于某种原因,除了随机字符串之外我无法提醒任何事情。所以我会链接它,但它主要是供参考。 Demo:

1 个答案:

答案 0 :(得分:2)

我还没有检查过你的数学,所以我无法证明这一点,但似乎这些位置从未完全匹配 - 这并不令人感到意外,因为我们正在处理非理性问题。像素数舍入到10-15位小数。

但是,如果允许位置与最近的像素匹配,则可以使其工作(并且任何人都不应该更聪明)。此外,您需要检查动画的每个步骤,而不是像JSFiddle中的全局范围(难怪您只在重新加载页面时收到警报。:))

将它放在animate()函数中可以解决问题:

var positionsun = $("#Sun").position();
var positionplanet = $("#Earth").position();

if(Math.round(positionplanet.left) == Math.round(positionsun.left))
    alert("aligned!");

另外,如果使用jQuery函数(如$(...)),请确保包含jQuery。