我有一个地球绕太阳旋转的动画。太阳保持原状,但地球不断变化。

我想提醒一条消息:“已对齐!”当地球与太阳完全垂直对齐时我已经对其进行了测试,但是除了页面已加载并且页面加载后conditial语句与地球的位置相对应之外,其他任何时间都无法收到警报消息,甚至在地球接近对齐之前。

下面的代码将仅显示地球的位置,因为它的位置在400之上。因此,如果我说like,在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:

最佳答案

我没有检查过数学,所以我不能肯定地证明这一点,但是似乎位置永远不完全匹配-这不足为奇,因为我们正在处理的像素数不合理的舍入为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。

关于javascript - 警报.position()方法无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37297090/

10-15 23:12