当窗口没有聚焦时,如何强制Jquery动画发生

好的,所以我正在建立一个基于ajax的游戏。 无论如何,它是多人游戏,连接到服务器。 它轮询服务器,一直获取更新。 无论如何,游戏具有不同的游戏状态,并且必须基于游戏状态来动画GUI。

然而,问题是; 当窗口没有聚焦时,jquery动画会排队并且不会渲染。 这意味着用户走了5分钟然后回来,一大堆过时的动画开始逐一运行。

所以我想知道是否有任何方法可以强制jquery动画在被调用时运行而不是等待焦点窗口?

有关发生这种情况的更多信息,请阅读http://qui.jquery.com/fadeIn/中的jquery文档中的附加说明。

干杯,乔希

根据动画,您可以通过调用.queue()在获取动画队列的body元素上添加onfocus事件,如果它长于一个元素,则可以调用.clearQueue() 。 当然,你必须小心不要弄乱布局,因为它删除了所有的动画。

如果列表长于一个元素,您也可以尝试执行jQuery.fx.off = true 。 这应该将所有动画的持续时间设置为0,这将导致所有排队的动画立即完成,并再次启用动画,将值设置为false。 但是,由于我自己没有尝试过,我不确定它是否仅在尚未运行的动画(已在队列中)或仅在尚未添加到的动画中设置持续时间一个队列。 如果后一种情况属实,您可以遍历队列并手动将每个持续时间设置为0。

与Zanfa的答案类似 – 您可以使用焦点事件,但您也可以将它与模糊事件结合使用。

因此,您可以使用模糊事件来干净地暂停游戏,停止任何动画,然后再使用焦点来重新开始游戏。