2012-02-18 88 views
1

这是我的问题,我正在开发一个个人网站,在背景中有一个巨大的动画,云在无限循环中移动。所有的事情都是用jQuery扩展了jquery定时器和精灵来完成的。 | 首先填写云起始位置矩阵(随机) | 它设置了每个云的实际位置。 | 开始使用.animate()函数移动云层,并启动一个定时器以再次触发该动画,直到云层到达左边界。 | 重复永远:)(Jquery/Javascript)事件句柄 - 失去焦点

反正这种方法消耗一个“小”的内存和CPU,我试图优化代码, 我想知道如果有调用函数的方法时,浏览器切换到不同页面,停止动画。

谢谢。

另外,如果有人会帮助优化代码,我将非常感激! :) 我会发布链接到网站,如果任何人都可以提供帮助。 再次感谢

ScreenShot

回答

3

首先,确保你的动画一个 DOM元素,而不是一堆个人云。把你的云放入一个容器并移动后者。

二,看看CSS3 transitions。它们是,比基于JavaScript的动画更加平滑(GPU加速)。此外,超级简单的学习和使用。只需描述一个CSS类,并在初始位置设置时将其添加到您的云中。

作为用于确定是否浏览器标签是在使用的jQuery动画股票背景,requestAnimationFrame这是一个60 FPS断续器,可以做到这一点对你自动


它的出现,jQuery是不再使用​​(他们used to在某些时候,但后来删除了)。所以,这里的an animate function雇用​​(与IE的setTimeout垫片),你可以窃取想法(或只是抓住功能本身)。

2

你可以听窗口的blurfocus事件:

$(window).on('blur', function() { 
    // window went into background, stop animations here 
    // ... 
}); 

$(window).on('focus', function() { 
    // window became active, start animations here 
    // ... 
});