我有一个围绕太阳旋转的地球动画。太阳停留,但地球不断改变位置。
我想提醒一条消息“对齐!”当地球与太阳完全垂直对齐时。我一直在测试它,但除了页面加载时,我无法得到警报消息,并且在页面加载之前,条件语句对应于地球的位置,在地球甚至接近对齐之前
下面的代码只显示地球的位置,因为它的位置在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:
答案 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。